Docker и POSTGRESQL - PullRequest
       19

Docker и POSTGRESQL

0 голосов
/ 04 апреля 2020

Я создаю новый проект, используя Docker на Django. когда я записываю настройки для подключения к Postgres, возникает ошибка - (conn = _connect (dsn, connection_factory = connection_factory, ** kwasyn c) django .db.utils.OperationalError: не удалось перевести имя хоста "db "по адресу: имя узла или имя сервера указано или не известно)

Вот мой код в проекте: settings.py

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

docker -compose.yml

version: '3.7'
services:
  web:
    build: .
    command: python /code/manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - 8000:8000
    depends_on:

      - db


  db:

      image: postgres:11
      environment:
        POSTGRES_DB: "db"
        POSTGRES_HOST_AUTH_METHOD: "trust"

и Dockerfile:

# Pull base image
FROM python:3.7
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
# Set work directory
WORKDIR /code
# Install dependencies

COPY Pipfile Pipfile.lock /code/
RUN pip install pipenv && pipenv install --system
# Copy project
COPY . /code/
RUN pip install psycopg2-binary

Пожалуйста, помогите решить эту проблему. Я прочитал много информации о stackoverflow об этом. Измененный код. Но ничего не помогло мне в этой ситуации.

1 Ответ

0 голосов
/ 05 апреля 2020

Вы должны указать имя хоста в:

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

В противном случае он попытается подключиться к хосту с именем db.

...