Не удается соединить контейнер Postgres с контейнером Django на Docker

У меня есть два изображения: 1. PostgreSQL, 2. приложение Django. Я пытаюсь соединить django с postgres через сетевое соединение. Вот мой DATABASE_URL

DATABASE_URL=postgres://postgres:somepassword@0.0.0.0:5432/music

и мой docker-compose.yml

version: "3.1"
services:
        db:
                image: postgres
                environment:
                        POSTGRES_USER: postgres
                        POSTGRES_PASSWORD: qweytr21
                        POSTGRES_DB: music
                ports:
                        - 5432:5432
        web:
                build: music-releases/
                ports:
                        - 8000:8000
                depends_on:
                        - db          
                command: pipenv run python manage.py migrate

Когда я запускаю docker-compose up. Postgres показывает, что он слушает этот адрес

listening on IPv4 address "0.0.0.0", port 5432

Но Django (psycopg2-binary) показывает ошибку

django.db.utils.OperationalError: could not connect to server: Connection refused
        Is the server running on host "0.0.0.0" and accepting
        TCP/IP connections on port 5432?

Как вы можете видеть, psycopg ищет истинный хост и порт, и postgres также прослушивает этот хост и порт. Я уже искал другой ответ, но они не работают. Любая помощь PLEEEASE!!!

Как упоминается в комментариях Оли

  • вы должны использовать db в качестве имени хоста для подключения к базе данных

  • оба контейнера должны находиться в одной сети, поэтому создайте сеть docker с помощью этой команды docker network create <your network>

    .
  • добавьте в файл docker-compose сеть для обоих контейнеров, вы можете следовать этому учебнику

Вернуться на верх