web-dev-qa-db-ja.com

docker composeによる継承またはネスト

アプリケーションを開始する最善の方法は、提供するdocker composeを使用することです。 docker-composeは、すべてのサービスを正しい構成で開始します。

次に、アプリケーションが異なるバックエンドで実行されるdocker-composeを提供したいと思います。この構成では、10のうち8つのサービスが同じで、2つのサービスが異なります。

コードを複製せずにこれを達成する方法?サービスは別のdocker-composeファイルからサービスを拡張できることがわかりますが、これには両方のファイルの10個のサービスすべてをリストする必要があります。

26
Reto Gmür

Docker-compose 1.6では、これが可能になります。

docker-compose.yml共通​​サービス:

service01:
  image: image01
  links:
    - service02

service02:
  image: image02

2番目のファイル、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

18
José Luis

これを実現する最も簡単な方法は、2番目の構成ファイルを作成することです。 2番目のファイルでは、Docker Composeの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

...等々。

14
Justin Niessner