I have currently a system built with docker-compose, it creates a Django application.
Up until now I've used a database inside a container (postgresql) in my testing build. Now I've changed the database from this container to an RDS instance in AWS.
Using Pg_dump I have recreated the database inside RDS and changed the settings.py, everything was supposedly normal. I have accessed the data from the database inside my webapp without any problems.
Everything was ok until I had to make a migration. Without the database container the Django container gives me this message:
django.db.utils.OperationalError: could not translate host name "db"
to address: Name or service not known
My Docker-compose.yml file before the changes:
version: '2'
services:
db:
image: postgres:9.5
restart: always
environment:
POSTGRES_USER: testing
POSTGRES_PASSWORD: tests
POSTGRES_DB: test
volumes:
- /dbdata:/var/lib/postgresql/data
django:
build: ./django
command: gunicorn contactto.wsgi:application -b 0.0.0.0:8000
restart: always
volumes:
- ./django:/usr/src/app
- ./django/static:/usr/src/app/contactto/static
ports:
- "8000:8000"
depends_on:
- db
Now after the changes:
version: '2'
services:
django:
build: ./django
command: gunicorn contactto.wsgi:application -b 0.0.0.0:8000
restart: always
volumes:
- ./django:/usr/src/app
- ./django/static:/usr/src/app/contactto/static
ports:
- "8000:8000"
And the DATABASES from settings.py .
Before:
DATABASES = {
'default': {
'ENGINE': 'tenant_schemas.postgresql_backend',
'NAME': 'testing',
'USER': 'test',
'PASSWORD': 'test',
'HOST': 'db',
'PORT': '5432',
}
}
After:
DATABASES = {
'default': {
'ENGINE': 'tenant_schemas.postgresql_backend',
'NAME': 'testing',
'USER': 'test',
'PASSWORD': 'test',
'HOST': 'xxx.rds.amazonaws.com',
'PORT': '5432',
}
}
The weird thing is, I can use the aws database inside my app... I can create users and do things inside the database and the changes appear. Now in the CLI I can't even use manage.py shell without the message.
I am completely lost.
See Question&Answers more detail:
os