Невозможно соединить django conatiner с postgresql conatiner
Я пытаюсь соединить django и postgresql в контейнере docker, у меня не получается. Я пробовал несколько вещей, но у меня ничего не получается, вот мой файл docker compose
version: '3.8'
services:
backend:
build:
context: .
dockerfile: Dockerfile
command: python manage.py runserver 0.0.0.0:8000
ports:
- 8000:8000
volumes:
- .:/app
restart: on-failure
depends_on:
rabbitmq:
condition: service_healthy
postgres:
image: postgres
container_name: postgres
volumes:
- ./postgres-data:/var/lib/postgresql/data
environment:
- POSTGRES_DB=main
- POSTGRES_USER=postgres
- POSTGRES_PASSWORD=admin
ports:
- 5431:5431
rabbitmq:
image: rabbitmq:3-management
container_name: rabbitmq
hostname: rabbitmq
ports:
- 15673:15672
environment:
RABBITMQ_DEFAULT_USER: guest
RABBITMQ_DEFAULT_PASS: guest
healthcheck:
test: rabbitmq-diagnostics check_port_connectivity
interval: 30s
timeout: 30s
retries: 10
# queue:
# build:
# context: .
# dockerfile: Dockerfile
# command: 'python consumer.py'
# depends_on:
# - db
# - rabbitmq
# - backend
В settings.py у меня есть такая конфигурация:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'main',
'USER': 'postgres',
'PASSWORD': 'admin',
'HOST': 'postgres',
'PORT': '5431'
}
}
Теперь, когда я выполняю команду docker-compose up, я получаю ошибку "django.db.utils.OperationalError: could not translate host name "postgres" to address: Temporary failure in name resolution"
Я также попробовал изменить имя хоста на localhost в settings.py, после чего он выдает ошибку "TCP/IP соединения на порту 5431? "
Текущий образ postgres использует 5432
в качестве порта по умолчанию https://hub.docker.com/_/postgres
Измените его на 5432 вместо
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'main',
'USER': 'postgres',
'PASSWORD': 'admin',
'HOST': 'postgres',
'PORT': '5432',
}
}