2015-06-24 17 views
9

Docker-compose öğreticisi here (django ve postgres kapsayıcısını bağlama) ile takip ediyorum. Her ne kadar öğretici ile devam edebildim, ancak bir mysql kabı kullanarak aynı 'u tekrarlayarak devam edemiyorum. Aşağıdaki benim dockerfile ve liman işçilerinin-compose.yml olan `Docker-compose öğesini kullanarak django ve mysql kapsayıcılarını bağlama

db: 
    image: mysql 
web: 
    build: . 
    command: python manage.py runserver 0.0.0.0:8000 
    volumes: 
    - .:/code 
    ports: 
    - "8000:8000" 
    links: 
    - db:db 

` ben docker-compose up yapmak ancak db ortam değişkenleri geçirilen değil gibi görünüyor zaman ikisi de ince inşa

FROM python:2.7 
RUN mkdir /code 
WORKDIR /code 
RUN pip install mysql-python 
RUN pip install django 

dockerfile django kapsayıcım, django görünümlerimden birinde os.environ.keys() çalıştırdığımdan beri beklenen DB_ * ortam değişkenlerini göremiyorum. Yani mysql farklı bir kurulum gerektiriyor mu yoksa bir şey özlüyor muyum? Teşekkür ederiz. Docker sürüm

docker-compose version: 1.3.0 
CPython version: 2.7.9 
OpenSSL version: OpenSSL 1.0.1e 11 Feb 2013 

Docker sürüm

Eğer ortam değişkeni dert etmenize gerek yok
Docker version 1.6.2, build 7c8fca2 
+0

çalışmaya başlamalıdır tekrar aşağıdaki? Docker-compose up'un çıktısını paylaşır mısınız?Ayrıca @dnozay – Thomasleveil

+0

https://hub.docker.com/_/mysql/#environment-variables – user81269

+0

https://github.com/pahaz/ tarafından önerilen "docker-compose run web env" çıktısını paylaşabilirsiniz docker-compose-django-postgresql-radis-örnek - django + redis + postgres + nginx örnek oluştur – pahaz

cevap

2

oluşturmak

[DÜZENLE] . Kapları birbirine bağlarken, bağlantı tarafından tanımlanan kapsayıcı adını, ana makine adıymış gibi kullanın. Örneğin

sizin docker-compose.yml dosya olsaydı: En django ayarlarında

db: 
    image: postgres 
web: 
    build: . 
    command: python manage.py runserver 0.0.0.0:8000 
    volumes: 
    - .:/code 
    ports: 
    - "8000:8000" 
    links: 
    - db:mydb 

Eğer mydb veritabanı ana bilgisayar ayarlamanız gerekir. Eğer docker-compose komut düzgün, konteynerler bağlantılı olmalıdır kullanıldığı takdirde

+1

Cevabınız için teşekkürler Düzenlememi kontrol edin. Ben docker -compose.yml.It mysql yerine soruda postgres kullanma hatası yaptım bir kopyala yapıştır hatası oldu. Ben senin yaklaşımını denedim ve ben bilinmeyen mysql sunucu host 'mydb' – michaelmwangi

2

Önce ... ayarlar dosyasını değiştirmek için Ardından

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'postgres', 
     'USER': 'postgres', 
     'HOST': 'db', 
     'PORT': 5432, 
    } } 

gerekir ve bunun links yılında dayalı düzgün hostname db çözmelidir docker-compose.yml dosyası. Eğer

~/django-example: docker-compose run web env 
Starting djangoexample_db_1... 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin 
HOSTNAME=66ff09ed8632 
TERM=xterm 
DJANGOEXAMPLE_DB_1_PORT=tcp://172.17.0.35:5432 
DJANGOEXAMPLE_DB_1_PORT_5432_TCP=tcp://172.17.0.35:5432 
DJANGOEXAMPLE_DB_1_PORT_5432_TCP_ADDR=172.17.0.35 
DJANGOEXAMPLE_DB_1_PORT_5432_TCP_PORT=5432 
DJANGOEXAMPLE_DB_1_PORT_5432_TCP_PROTO=tcp 
DJANGOEXAMPLE_DB_1_NAME=/djangoexample_web_run_2/djangoexample_db_1 
DJANGOEXAMPLE_DB_1_ENV_affinity:container==52c78c810792b0e7b9a231eab7ab7a3d50c95b76faf0abb8ec38a7d1ff0c7e5f 
DJANGOEXAMPLE_DB_1_ENV_LANG=en_US.utf8 
DJANGOEXAMPLE_DB_1_ENV_PG_MAJOR=9.4 
DJANGOEXAMPLE_DB_1_ENV_PG_VERSION=9.4.4-1.pgdg70+1 
DJANGOEXAMPLE_DB_1_ENV_PGDATA=/var/lib/postgresql/data 
DB_PORT=tcp://172.17.0.35:5432 
DB_PORT_5432_TCP=tcp://172.17.0.35:5432 
DB_PORT_5432_TCP_ADDR=172.17.0.35 
DB_PORT_5432_TCP_PORT=5432 
DB_PORT_5432_TCP_PROTO=tcp 
DB_NAME=/djangoexample_web_run_2/db 
DB_ENV_affinity:container==52c78c810792b0e7b9a231eab7ab7a3d50c95b76faf0abb8ec38a7d1ff0c7e5f 
DB_ENV_LANG=en_US.utf8 
DB_ENV_PG_MAJOR=9.4 
DB_ENV_PG_VERSION=9.4.4-1.pgdg70+1 
DB_ENV_PGDATA=/var/lib/postgresql/data 
DB_1_PORT=tcp://172.17.0.35:5432 
DB_1_PORT_5432_TCP=tcp://172.17.0.35:5432 
DB_1_PORT_5432_TCP_ADDR=172.17.0.35 
DB_1_PORT_5432_TCP_PORT=5432 
DB_1_PORT_5432_TCP_PROTO=tcp 
DB_1_NAME=/djangoexample_web_run_2/db_1 
DB_1_ENV_affinity:container==52c78c810792b0e7b9a231eab7ab7a3d50c95b76faf0abb8ec38a7d1ff0c7e5f 
DB_1_ENV_LANG=en_US.utf8 
DB_1_ENV_PG_MAJOR=9.4 
DB_1_ENV_PG_VERSION=9.4.4-1.pgdg70+1 
DB_1_ENV_PGDATA=/var/lib/postgresql/data 
LANG=C.UTF-8 
PYTHON_VERSION=2.7.10 
PYTHON_PIP_VERSION=7.0.3 
PYTHONUNBUFFERED=1 
HOME=/root 
+0

Merhaba olsun Cevabınız için teşekkür ederim ama bir kopya yapıştırma hatası yapmıştı lütfen benim düzenlenmiş docker-compose.yml dosyasına bakın. Teşekkür ederim – michaelmwangi

5

Django ise ... çevreyi kontrol etmek istiyorsanız

Yine de böyle bir şey olduğundan emin olun dosyayı settings.py: sonra

DATABASES = { 
'default': { 
    'ENGINE': 'django.db.backends.mysql', 
    'NAME': 'django1', 
    'USER': 'django', 
    'PASSWORD': 'password', 
    'HOST': 'db', 
    'PORT': 3306, 
    } 
} 

senin docker-compose.yml dosya satırında bir şey olduğundan emin olun:

db: 
    image: mysql 
    environment: 
    MYSQL_ROOT_PASSWORD: docker 
    MYSQL_DATABASE: docker 
    MYSQL_USER: docker 
    MYSQL_PASSWORD: docker 
sonra liman işçisi/django öğretici başına sen koşmak takip ediyor herşeyi yeniden inşa etmek ve işler kullandığınız Ne Docker ve liman işçilerinin-ileti yazma versiyonları

docker-compose web django-admin.py startproject composeexample . 
+0

Harika, sonunda bana yardımcı oldu. Yine de bu HOST: 'db' nasıl çalışır? – sam

+0

Merhaba Sam, HOST, bir uzak veritabanı ana bilgisayarının tam etki alanı adı veya IP adresidir. Değeri boş bırakırsanız, localhost'ta bir veritabanı kullanmak demektir. Ayrıca localhost'u 'HOST': '127.0.0.1' olarak belirterek başarı elde ettim, ancak onu boş bırakabilmelisiniz. – AnotherLongUsername

İlgili konular