#python #django #postgresql #docker #docker-compose
#python #django #postgresql #docker #docker-compose
Вопрос:
Это docker compose для django
environment:
SECRET_KEY: "KEY"
DEBUG: "True"
NAME: "NAME"
USER: "USER"
PASSWORD: "PASSWORD"
HOST: "HOST"
PORT: "5434"
depends_on:
- postgres_db
Это docker compose для postgres
postgres_db:
image: postgres
environment:
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_USER: ss
POSTGRES_PASSWORD: ss
PGDATA: /data/ss
volumes:
- postgres:/data/postgres
ports:
- "5434:5432"
networks:
main_network:
ipv4_address: 10.10.0.4
restart: unless-stopped
Это мои данные конфигурации базы данных в настройках django.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.getenv('NAME'),
'USER': os.getenv('USER'),
'PASSWORD': os.getenv('PASSWORD'),
'HOST': "postgres_db",
'PORT': os.getenv('PORT')
}
}
Я не могу найти свою ошибку. Я потратил 4-5 часов, но безуспешно.
тем не менее, я получаю эту ошибку: сервер работает на хосте «postgres_db» (10.10.0.4) и принимает соединения TCP / IP через порт 5434? когда я пишу docker compose up
Комментарии:
1. Работает ли контейнер postgres нормально? Вы проверили статус службы postgres в ее контейнере?
2. @Jarvis Да, он работает нормально, я могу подключиться, если я напишу 127.0.0.1 в своем файле настроек. Но в docker это не работает.
3. Почему вы добавили конфигурацию сетей в Dockerfile postgres?
4. @Jarvis, потому что я хочу подключиться из django в docker
5. Разве вы не можете использовать имя контейнера docker непосредственно на локальном хосте? Почему вы указали
10.10.0.4
явно?
Ответ №1:
По умолчанию он обычно работает на порту ‘5432’.
Ответ №2:
РЕШЕНИЕ
Я удалил все контейнеры, тома и изображения, после чего заработал.