2015-10-04 10 views
22

Birden fazla kapsayıcıyı döndürmek için docker-komutuyla ölçek komutunu kullanabileceğinizi anlıyorum. Ancak, hepsi aynı konfigürasyona sahip olacaklar.Farklı yapılandırmaları olan bir kapsayıcının birden fazla örneğini döndürmek için Docker-Compose'u kullanma

Aynı anasistemde aynı ana bilgisayarda farklı yapılandırmalarla (farklı .yml dosyaları) bir kapsayıcıyı başlatmak mümkün müdür?

aşağıdaki komutları kullanarak:

docker-compose -f dev.yml up -d 
docker-compose -f qa.yml up -d 

sadece qa.yml konteyner ne istiyorum olmadığı, yayınlanmaya başlayacak.

- düzenlemek -

Burada hem komutlar çalıştırmayı deneyin böyle olur. Böyle

$ docker-compose -f compose/dev.yml up -d 
compose_mydocker_1 is up-to-date 
$ docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS     NAMES 
905912df6e48  compose_mydocker "/sbin/my_init"  2 days ago   Up 2 days   0.0.0.0:1234->80/tcp compose_mydocker_1 
$ docker-compose -f compose/qa.yml up -d 
Recreating compose_mydocker_1... 
$ docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS     NAMES 
3fc912201224  compose_mydocker "/sbin/my_init"  5 seconds ago  Up 5 seconds  0.0.0.0:1235->80/tcp compose_mydocker_1 

Benim qa.yml ve dev.yml görünüm:

mydocker: 
    build: .. 

    ports: 
    - "1234:80" #for dev.yml 
    #- "1235:80" for qa.yml 
    environment: 
    - ENVIRONMENT=dev #and vice-versa for qa 

    volumes: 
    - ../assets/images:/var/www/assets 
+0

Ne hem komutları çalıştırın oluyorsa? Ve yan soru: Neden aynı ana bilgisayarda aynı anda çalıştırılacak her iki yapılandırmaya ihtiyacınız var? – Opal

+0

günlüğünü 'dev' ve' qa' docker-compose başlangıçtan yapıştırabilirsiniz. 'dev' ilk çalıştırılırsa, zaten kullanımda olan bağlantı noktaları nedeniyle 'qa' nın öldüğünü beklerdim. – booyaa

+0

İstenen bilgileri soruya ekleyeceğim! @Opal: Test amaçlı olarak her iki ortamı da 1 sunucu üzerinde çalıştırmak istiyorum. "dev", devlerin üzerinde çalıştığı ortamdır (kırılabilir) ve "qa", QA'ların bir yapının "dev" ini yaptıktan sonra test yapmasıdır. – Nepoxx

cevap

36

Ne yapmak gerek proje adını değiştirmektir. Varsayılan olarak, compose, geçerli dizine göre adlandırılmış bir proje kullanır. Senin durumunda, ayrı ortamlar istiyorsun, bu yüzden farklı proje isimlerine ihtiyacın var.

docker-compose -p <project_name> veya COMPOSE_PROJECT_NAME ortamlarında kullanabilirsiniz.

proje adı inat etmenin bir yolunu sunma konusunda bazı tartışmalar da vardır: https://github.com/docker/compose/issues/745

+0

Bir projedeki tüm kapsayıcılar nasıl durdurulur? – andrepcg

+2

'docker-compose -p dur 'veya' docker-compose -p aşağı ' – dnephin