Я запускаю мультиконтейнерное приложение на 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