2015-10-29 4 views
12

アプリケーションを開始する最善の方法は、ドッキング・ツールを使用して作成することです。ドッカーの作成は、適切な設定ですべてのサービスを開始します。ドッカーで継承またはネスティングを作成する

ここでは、アプリケーションが異なるバックエンドで実行されるドッカー作成を提供したいと考えています。この構成では、8アウト10のサービスは同じで、2つのサービスは異なります。

コード重複なしでこれを達成するにはどうすればいいですか?サービスが別のドッカー作成ファイルからサービスを拡張できることがわかりましたが、それでも両方のファイルに10のサービスをすべてリストする必要があります。

答えて

11

これを達成する最も簡単な方法は、2番目の作成ファイルを作成することです。第二のファイルでは、あなたが別のファイルからサービスを「継承」することができますドッカー作曲のextend機能を使用することができます:あなたの元のファイルがdocker-compose.yamlであると仮定すると、https://docs.docker.com/compose/extends/

を、あなたは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個のサービスを全てリストアップする必要があります。もし私が新しいサービスを追加したら、ボットファイルを編集する必要があります。私は構成全体を継承または含める方法を探していました。 –

+1

@RetoGmür - 私はちょうど同じことをしました。残念ながら、Docker Compose設定ファイル全体を拡張する方法は現在ありません。 –

+0

最新のRCリリースhttps://github.com/docker/compose/releases/tag/1.5で入手できるhttps://github.com/docker/compose/pull/2051に興味があると思います。 0rc2 – dnephin

8

ドッカー製作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 

詳細については、offマニュアル: https://docs.docker.com/compose/extends/#multiple-compose-files

関連する問題