開始我們的應用程序的最佳途徑是通過使用碼頭組成我們porvide。 docker-compose使用正確的配置啓動所有服務。繼承或嵌套與碼頭構成
現在我們想提供一個docker-compose,其中應用程序運行在不同的後端。在這個組合中,8個10個服務是相同的,2個是不同的。
如何實現這個沒有代碼重複?我發現服務可以從另一個docker-compose文件擴展服務,但是這仍然需要列出這兩個文件中的所有10個服務。
開始我們的應用程序的最佳途徑是通過使用碼頭組成我們porvide。 docker-compose使用正確的配置啓動所有服務。繼承或嵌套與碼頭構成
現在我們想提供一個docker-compose,其中應用程序運行在不同的後端。在這個組合中,8個10個服務是相同的,2個是不同的。
如何實現這個沒有代碼重複?我發現服務可以從另一個docker-compose文件擴展服務,但是這仍然需要列出這兩個文件中的所有10個服務。
實現此目的的最簡單方法是創建第二個撰寫文件。在第二個文件,你可以使用泊塢窗撰寫的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
...等等。
用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
謝謝。然而,這仍然需要列出'swap-backen-compose.yaml'文件中的所有10個服務,並且如果我添加一個新服務,我必須編輯bot文件。我正在尋找一種方法來繼承或包括整個撰寫。 –
@RetoGmür - 我剛剛經歷了同樣的事情。不幸的是,目前還沒有擴展整個Docker Compose配置文件的方法。 –
我想你會對https://github.com/docker/compose/pull/2051感興趣,它可以在最新的RC版本https://github.com/docker/compose/releases/tag/1.5中找到。 0rc2 – dnephin