Не удается соединить контейнер 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 сеть для обоих контейнеров, вы можете следовать этому учебнику