python manage.py migrate не будет подключаться к отдельному postgresql внутри другого контейнера Docker - PullRequest
0 голосов
/ 12 июня 2019

Добрый день, у меня есть docker-compose.yml, который содержит настройки для PostgreSQL и Dockerfile для создания образа для Django. Когда я запускаю python manage.py migrate, он выдает ошибку:

django.db.utils.OperationalError: could not translate host name "db" to address: Name does not resolve

Я новичок в Django, Docker и PostgreSQL, поэтому я ищу некоторые решения в Интернете, но не повезло.

докер-compose.yml

version: "3"
services:
  db:
    build: ./postgres
    volumes:
      - db-data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    env_file:
      - .dev.env
    networks:
      - backend
  redis:
    image: "redis:5.0-alpine"
    volumes:
      - redis-data:/data
    ports: 
      - "6379:6379"
    networks:
      - backend

networks:
  backend:

volumes:
  db-data:
  redis-data:

Dockerfile

FROM python:3.6-alpine
WORKDIR /usr/src/app
COPY requirements.txt ./
RUN mkdir -p /root/.ssh/
ADD id_rsa /root/.ssh/id_rsa
RUN chmod 700 /root/.ssh/id_rsa
RUN echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing">>/etc/apk/repositories\
    && apk add --no-cache --virtual .build-deps gcc git openssh-client \
    && apk add --no-cache musl-dev \
    postgresql-dev \
    jpeg-dev \
    zlib-dev \
    gdal-dev \
    proj4 \
    openssl-dev \
    libmagic \
    libffi-dev \
    python3-dev \
    musl-dev \
    && ssh-keyscan github.com >> ~/.ssh/known_hosts \
    && pip install --no-cache-dir -r requirements.txt
    # todo SHOULD NOT DO THE SSH KEYSCAN. SHOULD USE PUBLIC REPO INSTEAD

COPY . .
EXPOSE 8000
VOLUME ["/usr/src/app/storage"]
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

setting.py

DATABASES = {
        'default': {
            'ENGINE': 'django.contrib.gis.db.backends.postgis',
            'NAME': os.environ['POSTGRES_DB'],
            'USER': os.environ['POSTGRES_USER'],
            'PASSWORD': os.environ['POSTGRES_PASSWORD'],
            'HOST': os.environ.get('POSTGRES_HOST', 'db'),
            'PORT': os.environ.get('POSTGRES_PORT', '5432'),
        }
    }

Он должен был перенести базу данных / подключиться к ней.

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