2015-10-29 55 views
12

開始我們的應用程序的最佳途徑是通過使用碼頭組成我們porvide。 docker-compose使用正確的配置啓動所有服務。繼承或嵌套與碼頭構成

現在我們想提供一個docker-compose,其中應用程序運行在不同的後端。在這個組合中,8個10個服務是相同的,2個是不同的。

如何實現這個沒有代碼重複?我發現服務可以從另一個docker-compose文件擴展服務,但是這仍然需要列出這兩個文件中的所有10個服務。

回答

11

實現此目的的最簡單方法是創建第二個撰寫文件。在第二個文件,你可以使用泊塢窗撰寫的extend功能,它可以讓你從另一個文件「繼承」服務:https://docs.docker.com/compose/extends/

假設你的原始文件docker-compose.yaml,你可以創建一個swap-backend-compose.yaml

service-one: 
    extends: 
    file: docker-compose.yaml 
    service: service-one 

service-two: 
    extends: 
    file: docker-compose.yaml 
    service: service-two 
    environment: 
    - BACKEND=some_other_value 

...等等。

+0

謝謝。然而,這仍然需要列出'swap-backen-compose.yaml'文件中的所有10個服務,並且如果我添加一個新服務,我必須編輯bot文件。我正在尋找一種方法來繼承或包括整個撰寫。 –

+1

@RetoGmür - 我剛剛經歷了同樣的事情。不幸的是,目前還沒有擴展整個Docker Compose配置文件的方法。 –

+0

我想你會對https://github.com/docker/compose/pull/2051感興趣,它可以在最新的RC版本https://github.com/docker/compose/releases/tag/1.5中找到。 0rc2 – dnephin

8

用docker-compose 1.6這應該是可以的。

創建與您共同服務docker-compose.yml

service01: 
    image: image01 
    links: 
    - service02 

service02: 
    image: image02 

和第二文件,docker-compose.prod.yml與獨特的服務:

service03: 
    image: image03 
    links: 
    - service02 

現在你可以使用此命令啓動服務01,02和03 :

docker-compose -f docker-compose.yml -f docker-compose.prod.yml 

欲瞭解更多信息,請參閱關閉官方文檔: https://docs.docker.com/compose/extends/#multiple-compose-files