2016-10-08 5 views
3

docker-composeで2つのアプリを実行しようとしています。これらのアプリは(明らかに)別々のフォルダにあり、それぞれ独自のdocker-compose.ymlを持っています。ファイルシステム上では、次のようになります。 ドッカーで複数のアプリを実行する

dir/app1/ 
    -... 
    -docker-compose.yml 
dir/app2/ 
    -... 
    -docker-compose.yml 

は今、我々は、彼らがHTTP経由でいくつかの核心ザラザラ統合を持っているために一緒にこれらの人を構成する方法が必要です。

デフォルトの問題の問題は、実行されているフォルダに対してすべての相対パスを扱う場合です。あなたは上記の例からdirに行くと

docker-compose up -f app1/docker-compose.yml -f app2/docker-compose.yml 

を実行した場合、あなたのdocker-compose.ymlのいずれかのファイルまたは何をenvのために相対パスを使用している場合ので、あなたは運の外になってしまうでしょう。

  1. ラン別にそれらのアプリ、ネットワークを使用します。

    ここでは実際に動作しますが、その欠点を持っている方法のリストです。それはCommunication between multiple docker-compose projects

    でいっぱいに記述されている

私はちょうど今をテストしてみた、それが動作します。短所:

  • あなたはdocker-compose.ymlでネットワークに言及し、いくつかの日リポジトリにそれを押して、ネットワークを発行してアプリをせずに、非実行可能であること、全アプリをレンダリングする必要があります。

  • あなたはそれらのアプリが実際にお互い

2を使用する絶対パスを待つためにいくつかの巧妙な方法を考え出す必要があります。まあ、それはちょうど悪く、どんな精巧さも必要ない。

3必要なポートをホストマシンに公開し、互いのことを知らずにホストと通信するようにします。それはあまりにも、明らかに、私です。

質問:docker-composeでタスクを管理するにはどうすればいいですか?

+1

なぜ一緒に行く必要があることを望みます両方のアプリケーションを実行するために1つの作成ファイルを使用するだけではありませんか? 'links'を使ってそれらの依存関係を制御することができます。 –

+1

だから、基本的なアイデアは、アプリケーションの1レベル上に新しい 'docker-compose.yml'を書いて、そこにすべてのパスとリンクを扱うことです?それはうまくいく可能性がありますが、どのアプリが属しているかは明確ではありません。しかし、それでも、それは最も汚い方法です、提案のおかげで! –

+1

私は同様のアプローチを使用して、個々の部分を一緒に引っ張るための別のプロジェクトを使用します。 Gitのサブモジュールを使って 'app1'と' app2'プロジェクトを共通のプロジェクトにクローンし、そこに 'docker-compose.yaml'を使って個々のアプリケーションからサービスをインポートします。本当にうまくいく... – nwinkler

答えて

0

フィードバックに感謝いたします。私たちのチームの中で私たちは、次の解決策に合意しました:

使用ネットワーク&オーバーライド

かいつまんで、あなたの元docker-compose.yml年代には、ビットを変更しないでください。近くにdocker-compose.override.ymlを作成するだけでネットワークを公開し、サービスをネットワークに接続するだけです。

だから、誰がスタンドアロンアプリが

docker-compose -f docker-compose.yml up 

を実行します。しかしあなたがアプリケーションにサイド・バイ・サイドと相互に通信を実行する必要がある場合、あなたは

docker-compose -f docker-compose.yml -f docker-compose.override.yml up 
関連する問題