2017-01-10 31 views
6

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.

Odpowiedz

1

Odpowiadając na moje pytanie, to był głupi ...

Moja manage.py został wybierając tylko plik ustawień base.py, i nie brał pod uwagę plik ustawień staging.py. Więc łamało się w CLI i nie włamało się do aplikacji.