Подключение к pgsql из веб-приложения django в docker-compose на эластичном стебле - PullRequest
0 голосов
/ 10 мая 2018

Я запускаю мультиконтейнерное приложение на AWS эластичном бобовом стебле, приложение работает и нормально подключается к моей локальной postgresql db, пока я docker-compose up. Но, тем не менее, когда я развертываю его на эластичном бобовом стебле, появляется ошибка:

  File "/usr/local/lib/python3.6/site-packages/psycopg2/__init__.py", line 130, in connect
    conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: could not translate host name "db" to 
address: Name or service not known

Я прочитал сообщение о том, что это мой settings.py в каталоге моего приложения и что мне нужно установить 'HOST': 'localhost', в 'HOST': 'db',, потому что это служба, которую ищет docker-compose.yml? Итак, вот мой settings.py и мой docker-compose.yml файл. Пожалуйста, дайте мне знать, если это правильно или есть какие-либо другие проблемы.

settings.py:

if 'RDS_DB_NAME' in os.environ:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': os.environ['RDS_DB_NAME'],
            'USER': os.environ['RDS_USERNAME'],
            'PASSWORD': os.environ['RDS_PASSWORD'],
            'HOST': os.environ['RDS_HOSTNAME'],
            'PORT': os.environ['RDS_PORT'],
        }
    }
else:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'actualnameofdb',
            'USER': 'xxx',
            'PASSWORD': '*****',
            'HOST': 'db',
            'PORT': '5432',
        }
    }

докер-compose.yml:

version: '3'

services:
  db:
    image: postgres:10.1
    environment:
      - POSTGRES_USER=rdeng
      - POSTGRES_PASSWORD=walterfedy
      - POSTGRES_DB=db1
    ports:

      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data/
  web:
    #image: rdeng/test:latest
    build:  $PWD
    environment:
      - RDS_DB_NAME=db1
      - RDS_USERNAME=rdeng
      - RDS_HOSTNAME=db
      - RDS_PASSWORD=walterfedy
      - RDS_PORT=5432
    command: bash -c "python /code/manage.py makemigrations && python /code/manage.py migrate && python /code/manage.py runserver 0.0$
    ports:
      - "8000:8000"
    depends_on:
      - db

volumes:
  postgres_data:

dockerfile:

FROM python:3.6

ENV PYTHONUNBUFFERED 1

ENV POSTGRES_DB db1
ENV POSTGRES_USER rdeng
ENV POSTGRES_PASSWORD walterfedy

COPY  $PWD /code/

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


COPY  $PWD/back.sql /code/docker-entrypoint-initdb.d/back.sql


EXPOSE 8000 5432
...