Mam obecnie system zbudowany z docker-compose, tworzy aplikację Django.Docker-compose z django nie może przetłumaczyć nazwy hosta "db" na adres: Nazwa lub usługa nieznana
Do tej pory używałem bazy danych wewnątrz kontenera (postgresql) w mojej kompilacji testowej. Teraz zmieniłem bazę danych z tego kontenera na instancję RDS w AWS.
Użycie Pg_dump Odtworzono bazę danych w RDS i zmieniłem plik settings.py, wszystko wyglądało normalnie. Dostęp do danych z bazy danych w moim webappie bez żadnych problemów.
Wszystko było ok, dopóki nie musiałem przeprowadzić migracji. Bez pojemnika bazy pojemnik Django daje mi tę wiadomość:
django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known
My Docker-compose.yml plik przed zmianami:
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
Teraz po zmianach:
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"
I DATABASES z pliku settings.py. Przed:
DATABASES = {
'default': {
'ENGINE': 'tenant_schemas.postgresql_backend',
'NAME': 'testing',
'USER': 'test',
'PASSWORD': 'test',
'HOST': 'db',
'PORT': '5432',
}
}
Po:
DATABASES = {
'default': {
'ENGINE': 'tenant_schemas.postgresql_backend',
'NAME': 'testing',
'USER': 'test',
'PASSWORD': 'test',
'HOST': 'xxx.rds.amazonaws.com',
'PORT': '5432',
}
}
Dziwne jest to, mogę korzystać z bazy danych AWS w mojej aplikacji ... Mogę tworzyć użytkowników i robić rzeczy, w bazie danych i pojawiają się zmiany . Teraz w CLI nie mogę nawet używać powłoki manage.py bez komunikatu.
Jestem kompletnie zagubiony.