2017-02-15 11 views
1

異なるバックエンドサービスに接続されている1 ... N個のアプリケーションコンテナを持つ設定があります。 docker-compose.ymlは次のようになります。ドッカー作成スケールの開始依存関係を作成するには?

services: 
    backend1: 
    ... 
    backend2: 
    ... 
    application: 
    ... 
    depends_on: 
     backend1: 
     condition: service_healthy 
     backend2: 
     condition: service_healthy 

docker-compose scale SERVICE=INSTANCES結果とアプリケーションの複数のインスタンスを起動明らかにこれ

$ docker-compose scale application=2 
Creating and starting application_1 ... done 
Creating and starting application_2 ... done 
$ docker ps -a 
CONTAINER ID IMAGE    COMMAND CREATED   STATUS      PORTS NAMES 
f4e274552239 application_image ...  4 minutes ago Up 4 minutes (unhealthy)   application_1 
39f28173087c application_image ...  4 minutes ago Up 4 minutes (unhealthy)   application_2 

で、依存関係が開始されていません。サービスの単一のインスタンスがdocker-compose up applicationで代わりに起動すると、依存関係が正しく開始されています

$ docker-compose up -d application 
Creating backend1_1 
Creating backend2_1 
Creating application_1 

その後、第2のインスタンスは、ドッキングウィンドウscaleを追加することができます。

$ docker-compose scale application=2 
Creating and starting application_2 ... done 

これが正常に動作します。しかし、docker-compose scaleも依存関係を開始させる何らかの方法はありますか?そうでない場合、その行動の背後にある根拠は何でしょうか?

答えて

1

私は今これを行う方法があるとは思わない。このトピックについては、長い実行中のissue commentaryがあります。

One of the commentsには、スキーマのバージョン3で使用できることが記載されています。

私はローカルに最小限のバージョンを試してみた:

version: '2' 

services: 
    a: 
    image: alpine 
    links: 
     - b 
    command: sleep 10 

    b: 
    image: alpine 
    command: sleep 10 

そしてupは規模では動作しません。しかし、あなたはあなたのコマンドですべてのサービスに名前を付けることができます(そして、あなたはおそらく既にこれを知っている)、その

docker-compose scale a=2 b=2

は、両方の2を作成し、正しいリンクをしました。

+0

編集のために感謝しています。@jotrocken、レイジータイピング:-) – mickadoo