PostgreSql не приходит к базе данных из проекта Django
Я использую PostgreSql в качестве базы данных в своем проекте Django. Когда я запускаю его локально через pgAdmin, данные появляются, но когда я запускаю его на сервере, данные не появляются в pgAdmin.
Django settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'xxxx',
'USER' : 'xxx',
'PASSWORD': 'xxx',
'HOST': 'pgdb',
'PORT': 5432,
}
}
docker-compose.yaml
services:
# CaddyServer reverse proxy
caddy:
restart: always
image: caddy:2-alpine
ports:
- "443:443"
command: caddy reverse-proxy --from https://xxxxxx.com --to http://0.0.0.0:8000
#volumes:
# - /local/path/to/Caddyfile:/path/inside/continer/to/Caddyfile
# networks:
# - web
# - bridge
# Django web app
django:
restart: always
build: .
ports:
- "80:8000"
depends_on:
- pgdb
#environment:
# - url=https://api.backend.example.com
#command: "gunicorn config.wsgi:application --bind 0.0.0.0:8000"
#networks:
# - bridge
pgdb:
image: postgres
container_name: pgdb
environment:
- POSTGRES_DB=xxxx
- POSTGRES_USER=xxxx
- POSTGRES_PASSWORD=xxxx
volumes:
- pg-data:/var/lib/postgresql/data/
volumes: pg-data:
Я подключаюсь через ip сервера pgAdmin. Соединение pgAdmin устанавливается, но данные, которые я ввел в систему, не видны на pgAdmin.
Это потому, что он находится не внутри вашей базы данных postgres, а только в pg_admin
Я бы предложил вам выполнить эту команду через ssh, чтобы получить список баз данных:
psql -l
После того, как вы получили все имена бд и их владельцев, проверьте, появилась ли ваша бд. Если да, попробуйте получить к ней доступ с помощью:
psql -U your_db_username || psql -U your_db_username -d your_db_name
Оцените и запросите свои таблицы, чтобы убедиться, что данные действительно есть.
Если его там нет, то я бы предложил сделать дамп базы данных с помощью:
pg_dump -U db_username db_name > your_backup.pgsql
После этого необходимо восстановить этот дамп через терминал в postgres:
psql -U db_username --set ON_ERROR_STOP=on -f your_backup.pgsql
Дайте мне знать, помогло ли вам это. Я могу помочь вам в дальнейшем, если это поможет, но вы столкнетесь с новыми/другими проблемами.