Подключение приложения 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
Вернуться на верх