Docker-django выдает ошибку при подключении к postgres: psycopg2.OperationalError: не удалось подключиться к серверу: соединение отклонено - PullRequest
1 голос
/ 24 сентября 2019

Я пытаюсь докернизировать мое приложение Django-postgres.Мой Dockerfile:

FROM python:3

ENV PYTHONUNBUFFERED 1

RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

Мой docker-compose.yml:

version: '3'

services:
  web:
    build: .
    command: python app/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
  db:
    image: postgres
    ports:
      - "5432:5432"
    environment:
      POSTGRES_PASSWORD: password

, и мои настройки .py имеют следующий код базы данных:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'password',
        'HOST': '0.0.0.0',
        'PORT': '5432',
    }
}

Мои базы данных и веб-контейнеры работают, но когда я запускаю: docker-compose run web python manage.py migrate Я получаю сообщение об ошибке:

psycopg2.OperationalError: не удалось подключитьсяк серверу: соединение отклонено. Сервер работает на хосте "0.0.0.0" и принимает соединения TCP / IP через порт 5432?

Как я могу установить связь между контейнерами?

1 Ответ

2 голосов
/ 24 сентября 2019

изменить HOST на:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': 'postgres',
        'USER': 'postgres',
        'PASSWORD': 'password',
        'HOST': 'db',
        'PORT': '5432',
    }
}

0.0.0.0 не является допустимым IP, кроме того, вам необходимо подключиться, используя имя service, поскольку compose разрешит его для вас

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