2015-10-04 15 views
22

Tôi hiểu rằng bạn có thể sử dụng docker-compose với lệnh scale để quay lên nhiều vùng chứa. Tuy nhiên, tất cả chúng sẽ có cùng cấu hình được sử dụng.Sử dụng Docker-Compose để quay lên nhiều phiên bản của vùng chứa với các cấu hình khác nhau

Có thể khởi chạy vùng chứa trên cùng một máy chủ với các cấu hình khác nhau (khác nhau .yml tệp) trên cùng một máy chủ không?

Sử dụng các lệnh sau:

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

chỉ qa.yml container sẽ được chạy, mà không phải là những gì tôi muốn.

- chỉnh sửa -

Đây là những gì xảy ra khi tôi thử chạy cả hai lệnh.

$ 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 

My qa.ymldev.yml cái nhìn như thế này:

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

Điều gì xảy ra khi bạn chạy cả hai lệnh? Và câu hỏi phụ: tại sao bạn cần cả hai cấu hình để chạy cùng một lúc trên cùng một máy chủ? – Opal

+0

bạn có thể dán nhật ký từ khởi động docker-compose 'dev' và' qa'. nếu 'dev' được chạy đầu tiên, tôi đã mong đợi' qa' đã chết vì các cổng đã được sử dụng. – booyaa

+0

Tôi sẽ thêm thông tin được yêu cầu vào câu hỏi! @Opal: Tôi muốn chạy cả hai môi trường trên 1 máy chủ cho mục đích thử nghiệm. "dev" là môi trường mà các dev làm việc (có thể bị hỏng) và "qa" là các môi trường QA thực hiện kiểm tra sau khi xây dựng làm cho nó ra khỏi 'dev' – Nepoxx

Trả lời

36

Những gì bạn cần làm là thay đổi tên dự án. Theo mặc định, soạn thư sử dụng một dự án có tên dựa trên thư mục hiện tại. Trong trường hợp của bạn, bạn muốn có các môi trường riêng biệt, vì vậy bạn cần các tên dự án khác nhau.

Bạn có thể sử dụng docker-compose -p <project_name> hoặc đặt COMPOSE_PROJECT_NAME trong môi trường.

Cũng có một số cuộc thảo luận về cách cung cấp cách duy trì tên dự án: https://github.com/docker/compose/issues/745

+0

Làm thế nào để ngăn chặn tất cả các thùng chứa trong một dự án? – andrepcg

+2

'docker-compose -p stop' hoặc' docker-compose -p down' – dnephin

Các vấn đề liên quan