Подключение приложения django к контейнеру postgres
У меня возникают трудности с подключением моего контейнерного приложения Django к моему контейнеру Postgres. Оператор docker compose для приложения Postgres выглядит следующим образом:
version: '3'
services:
database:
image: "postgres" # use latest official postgres version
restart: unless-stopped
env_file:
- ./database.env # configure postgres
networks:
- djangonetwork
ports:
- "5433:5432"
volumes:
- database-data:/var/lib/postgresql/data/ # persist data even if container shuts down
volumes:
database-data: # named volumes can be managed easier using docker-compose
networks:
djangonetwork:
driver: bridge
Утверждение compose для приложения Django выглядит следующим образом:
services:
app:
build: .
container_name: app
command: >
bash -c "python manage.py makemigrations &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
networks:
- djangonetwork
ports:
- 10555:8000
environment:
aws_access_key_id: ${aws_access_key_id}
aws_secret_access_key: ${aws_secret_access_key}
networks:
djangonetwork:
driver: bridge
Трудность возникает при выполнении оператора docker compose up. Я пробовал несколько различных значений POSTGRES_HOST (обратите внимание, что они успешно получены из Amazon Secrets Manager). Я получаю следующий вывод журнала:
Я в растерянности. Какое значение POSTGRES_HOST я должен использовать? Должен ли я устанавливать сетевые настройки по-другому?
Создание сети вручную, а затем использование внешнего соединения для каждого независимого контейнера было успешным. Сценарий для запуска сети в оболочке:
docker network create --driver=bridge dbnet
Переработанный Postgres yaml (обратите внимание, что я изменил настройки порта в этой версии для упрощения):
version: '3'
services:
database:
image: "postgres" # use latest official postgres version
restart: unless-stopped
env_file:
- ./database.env # configure postgres
networks:
- dbnet
ports:
- "5432:5432"
volumes:
- database-data:/var/lib/postgresql/data/ # persist data even if container shuts down
volumes:
database-data: # named volumes can be managed easier using docker-compose
networks:
dbnet:
external: true
Пересмотренный yaml-скрипт Django:
version: '3'
services:
app:
build: .
container_name: app
command: >
bash -c "python manage.py makemigrations &&
python manage.py migrate &&
python manage.py runserver 0.0.0.0:8000"
networks:
- dbnet
ports:
- 10555:8000
environment:
aws_access_key_id: ${aws_access_key_id}
aws_secret_access_key: ${aws_secret_access_key}
networks:
dbnet:
external: true