2017-01-10 11 views
6

Docker-compose ile oluşturulmuş bir sistemim var, bir Django uygulaması yaratıyor.Docker-compose with django adrese "db" ana bilgisayar adını çeviremedi: İsim veya hizmet bilinmiyor

Şimdiye kadar test yapmamda bir kapsayıcı (postgresql) içinde bir veritabanı kullandım. Şimdi veritabanını bu kapsayıcıdan AWS'deki bir RDS örneğine değiştirdim.

Pg_dump Kullanımı Veritabanını RDS içinde yeniden oluşturdum ve settings.py değiştirdim, her şey normaldi. Veritabanımdaki veritabanından veriye herhangi bir sorun olmadan eriştim.

Taşıma işlemi yapana kadar her şey yolundaydı.

django.db.utils.OperationalError: could not translate host name "db" to address: Name or service not known

Benim Docker-compose.yml dosya değişmeden önce: değişikliklerden sonra şimdi

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 

:

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" 

Ve veritabanı konteyner olmadan Django konteyner Bana bu mesajı veriyor settings.py'den VERİTABANLARI. önce:

DATABASES = { 
     'default': { 
      'ENGINE': 'tenant_schemas.postgresql_backend', 
      'NAME': 'testing', 
      'USER': 'test', 
      'PASSWORD': 'test', 
      'HOST': 'db', 
      'PORT': '5432', 
     } 
    } 

sonra:

DATABASES = { 
     'default': { 
      'ENGINE': 'tenant_schemas.postgresql_backend', 
      'NAME': 'testing', 
      'USER': 'test', 
      'PASSWORD': 'test', 
      'HOST': 'xxx.rds.amazonaws.com', 
      'PORT': '5432', 
     } 
    } 

garip bir şeydir, benim uygulamanın içinden aws veritabanını kullanabilirsiniz ... Ben kullanıcılar oluşturmak ve veritabanı içinde şeyler yapmak ve değişiklikler ortaya çıkabilir . Şimdi CLI'de, mesaj olmadan manage.py kabuğunu bile kullanamıyorum.

Tamamen kayboldum. Sorumu cevaplama

cevap

1

, bu

Benim manage.py sadece base.py ayarları dosyasını seçerek bir aptal biri ... idi ve dikkate staging.py ayarları dosyasını alarak değildi. Yani CLI içinde kırılıyordu ve uygulamanın içinde kırılmadı.

İlgili konular