2015-10-04 5 views
22

Rozumiem, że za pomocą polecenia scale można za pomocą komendy docker tworzyć wiele kontenerów. Jednak wszystkie będą miały tę samą konfigurację.Używanie funkcji Docker-Compose do zakręcania wielu instancji kontenera o różnych konfiguracjach

Czy jest możliwe uruchomienie kontenera na tym samym hoście z różnymi konfiguracjami (różne pliki .yml) na tym samym hoście?

Korzystanie następujące polecenia:

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

tylko pojemnik qa.yml zostanie uruchomiony, co nie jest to, co chcę.

- edit -

Oto co się dzieje, gdy próbuję działa zarówno poleceń.

$ 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 

Moja qa.yml i dev.yml wyglądać następująco:

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

co dzieje się podczas uruchamiania zarówno polecenia? I drugie pytanie: dlaczego potrzebne są obie konfiguracje jednocześnie na tym samym hoście? – Opal

+0

możesz wkleić dziennik z uruchamiania systemu DACH "dev" i "qa". jeśli 'dev' został uruchomiony jako pierwszy, spodziewałbym się, że' qa' umrze z powodu już używanych portów. – booyaa

+0

Dodam żądane informacje do pytania! @Opal: Chcę uruchomić oba środowiska na 1 serwerze w celach testowych. "dev" jest środowiskiem, w którym pracują dev (może być zepsuty), a "qa" jest środowiskiem, w którym kontrole jakości przeprowadzają testy po wykonaniu kompilacji z 'dev' – Nepoxx

Odpowiedz

36

Co trzeba zrobić, to zmienić nazwę projektu. Domyślnie compose używa projektu nazwanego na podstawie bieżącego katalogu. W twoim przypadku potrzebujesz osobnych środowisk, więc potrzebujesz różnych nazw projektów.

Można użyć albo docker-compose -p <project_name> lub ustawić COMPOSE_PROJECT_NAME w środowisku.

Istnieją również dyskusja o dostarczeniu sposobu utrwalania Nazwa projektu: https://github.com/docker/compose/issues/745

+0

Jak zatrzymać wszystkie kontenery w projekcie? – andrepcg

+2

'docker-compose-p stop' lub' docker-compose-p dół' – dnephin