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のために相対パスを使用している場合ので、あなたは運の外になってしまうでしょう。
- ラン別にそれらのアプリ、ネットワークを使用します。
ここでは実際に動作しますが、その欠点を持っている方法のリストです。それはCommunication between multiple docker-compose projects
でいっぱいに記述されている
私はちょうど今をテストしてみた、それが動作します。短所:
あなたは
docker-compose.yml
でネットワークに言及し、いくつかの日リポジトリにそれを押して、ネットワークを発行してアプリをせずに、非実行可能であること、全アプリをレンダリングする必要があります。あなたはそれらのアプリが実際にお互い
2を使用する絶対パスを待つためにいくつかの巧妙な方法を考え出す必要があります。まあ、それはちょうど悪く、どんな精巧さも必要ない。
3必要なポートをホストマシンに公開し、互いのことを知らずにホストと通信するようにします。それはあまりにも、明らかに、私です。
質問:docker-compose
でタスクを管理するにはどうすればいいですか?
なぜ一緒に行く必要があることを望みます両方のアプリケーションを実行するために1つの作成ファイルを使用するだけではありませんか? 'links'を使ってそれらの依存関係を制御することができます。 –
だから、基本的なアイデアは、アプリケーションの1レベル上に新しい 'docker-compose.yml'を書いて、そこにすべてのパスとリンクを扱うことです?それはうまくいく可能性がありますが、どのアプリが属しているかは明確ではありません。しかし、それでも、それは最も汚い方法です、提案のおかげで! –
私は同様のアプローチを使用して、個々の部分を一緒に引っ張るための別のプロジェクトを使用します。 Gitのサブモジュールを使って 'app1'と' app2'プロジェクトを共通のプロジェクトにクローンし、そこに 'docker-compose.yaml'を使って個々のアプリケーションからサービスをインポートします。本当にうまくいく... – nwinkler