Работает ли сервер на хосте «postgres_db» (10.10.0.4) и принимает соединения TCP / IP через порт 5434?

#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:

РЕШЕНИЕ

Я удалил все контейнеры, тома и изображения, после чего заработал.