2017-09-01 15 views
0

Dockerでオーケストレーションされたいくつかのマイクロサービスで構築されたプロジェクトをセットアップしようとしています。ここに私のプロジェクトの簡略化スキーマは次のとおりです。今Docker内蔵自己完結型マイクロサービス

- Main-project 
    - Dockerfile 
    - docker-compose.yml (bundles Microservice1 and Microservice2) 

- Microservice1 
    - Dockerfile 

- Microservice2 
    - Dockerfile 

、各コンポーネントは、このようなドッキングウィンドウ-compose.ymlファイルで管理さRabbitMQのように多くの依存関係を持っています。私はcomposeファイルを使ってDockerでプロジェクト全体を動かすことができます。

しかし、個々のコンポーネントを単独で実行する際に問題があります。問題は、Microservice1はrabbitMQに依存していますが、この依存関係を管理するための構成ファイルはなく、他のすべてのコンポーネントに対しても同様です。ですから、私自身が単独のコンポーネントを実行しようとすると(ユニットテストの場合、インスタンスのために)、私には依存関係がないという問題があります。

各コンポーネントのDockerfileにもすべての依存関係を追加する必要がありますか? コンポーネントごとに1つのドッカー作成ファイルを用意する必要がありますか? このようなシステムをセットアップするベストプラクティスは何ですか?

ありがとうございます!

アップデート:重要な注意点としては

、私は各microserviceは独自のレポを持っていることを言及するのを忘れてしまいました。

+0

どのように個別に実行しますか?ドッカーを使って走る? – sergiu

+0

これまで私はそれらを個別に実行することができませんでした。それはまさに私の問題です。すべての依存関係をDockerfileに追加するのか、それぞれの作成ファイルを持つのかはわかりません。 –

+0

ユースケースは何ですか?つまり、どちらのサービスもドッカーのコンテナに入っていますか?両方とも始めることに気をつけますか? – sergiu

答えて

2

マイクロサービスは自己完結型でなければならないことは事実です。つまり、他のマイクロサービスなしで展開して拡張することができます。しかし、通常、サービスの実行を開始するには、dbmsまたはメッセージ・ブローカーまたはキャッシング・システムが必要です。だから、Gitlab CIDroneやJenkinsのようなCIシステムのほとんどは、単体テストを実行する前に他のサービスを開始する機能を持っています。 CIを使用していない場合は、コンポーネントごとにファイルを作成するのが賢明でしょう。

関連する問題