Контейнер django не может получить доступ к контейнеру postgres - PullRequest
1 голос
/ 11 февраля 2020

Я пытаюсь получить базу данных и django rest api connect, используя docker -compose. Однако, мой django контейнер выдаёт мне эту ошибку:

django.db.utils.OperationalError: could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Cannot assign requested address
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?

Postgres запускается нормально, и я могу получить к нему доступ локально с помощью терминала. Я просто не уверен, почему мой контейнер django не может подключиться.

$ psql -h 0.0.0.0 -p 5432 -U bli1 -d redribbon
Password for user bli1:
psql (12.1)
Type "help" for help.

В пределах моего settings.py для django это мои значения базы данных

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.postgresql_psycopg2",
        "NAME": "redribbon",
        "USER": "bli1",
        "PASSWORD": "password",
        "HOST": "0.0.0.0",
        "PORT": "5432",
    }
}

docker -compose.yml

version: "3"
services:
  postgres:
    image: postgres:latest
    restart: always
    ports:
      - "5432:5432"
    volumes:
      - ./pgdata:/var/lib/postgresql/data/
    environment:
      POSTGRES_DB: redribbon
      POSTGRES_USER: bli1
      POSTGRES_PASSWORD: password
  api:
    build:
      dockerfile: Dockerfile.dev
      context: ./redribbon-api
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - ./redribbon-api/api:/usr/src/api
    depends_on:
      - postgres
    ports:
      - "8000:8000"

обновления:

В контейнере django я могу пропинговать postgres и получил это в ответ

# ping postgres
PING postgres (172.19.0.2) 56(84) bytes of data.
64 bytes from redribbon_postgres_1.redribbon_default (172.19.0.2): icmp_seq=1 ttl=64 time=0.175 ms
64 bytes from redribbon_postgres_1.redribbon_default (172.19.0.2): icmp_seq=2 ttl=64 time=0.096 ms
64 bytes from redribbon_postgres_1.redribbon_default (172.19.0.2): icmp_seq=3 ttl=64 time=0.097 ms

Я даже пытался изменить "HOST": "0.0.0.0", на "HOST": "postgres", в моем settings.py, но я получаю ту же ошибку, что и выше

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...