2017-02-25 5 views
0

Dockerとfabric8の初心者です。maven-docker-pluginです。 2つのコンテナを使用して、Webアプリケーションをデプロイし、データベースを1つ使用して、いくつかの統合テストを行いたいと思います。maven-docker-plugin:コンテナのIPアドレスを取得する方法

UPDATE: 私は、これらのコマンドを使用して、両方のコンテナを実行することができます。

docker run --name db -p 27017:27017 mongo 
docker run --name as -p 8080:8080 --link db mycustom/wildfly /opt/jboss/wildfly/standalone/bin/standalone.sh -b 0.0.0.0 -Ddbhost=172.17.0.2 -Ddbport=27017 

この私が使用するdockerfile:

FROM fpezzati/wildflyogm 
ARG webapp 
COPY $webapp /opt/jboss/wildfly/standalone/deployments/ 
EXPOSE 8080 
CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0"] 

を今、私はfabric8 maven-docker-pluginを使用して、両方のコンテナを実行したいです。この時点で、runコマンドを表現する方法を理解する必要があります。-Ddbhost=${dbhost} -Ddbport=${dbport}maven-docker-pluginです。ここで、${dbhost}${dbport}は、データベースコンテナのIPアドレスと公開ポートを持つ2つのプロパティです。 手作業で行っているようにrunコマンドを表現し、fabric8を使用してデータベースのIPアドレスをWebアプリケーションに認識させるにはどうすればよいですか?maven-docker-plugin

更新: 私はpom.xmlとdockerfileでいくつか混乱を取り除いています。今私は環境変数を使って引数を渡すことができます。 残っている唯一の問題は、Webコンテナの<run>...</run>設定にリンクされていても、データベースコンテナのIPアドレスを取得できないことです。

ここは私のプロジェクトのpomです。 私はmaven 3.3.9,docker 1.12.5、ファブリック8のmaven-docker-plugin 0.19.0を使用しています。

+0

コンテナに名前を付けるには '--name'を使用し、指定された外部コンテナをコンテナにリンクするには' --link'を使います。外部コンテナがリンクされている場合は、外部コンテナの名前をIPアドレスとして使用できます。 –

+0

@ 200OKこんにちは!私は両方のコンテナを走らせて、docker-cliでテストを実行できます。私は自動的に統合テストを実行するためにmavenでそれをやりたい質問が更新され、より明確になるはずです。ご意見ありがとうございます。 – Francesco

答えて

0

[OK]を取得しました。コンテナAをコンテナBにリンクすると、Dockerはホスト名としてABetc/hostsファイルに追加します。だからあなたはちょうどその名前を使用することができますコンテナのIPアドレスを把握する必要はありません。同じことがファブリック8 maven-docker-pluginで起こります。これは素晴らしいプラグインです。 A上のサービスに到達するためにA:27017を使用することができますあなたはS「の私のpomに私は的環境変数の代わりに、コンテナによって、文字列Aを渡すので、ポートを暴露S ABBAをリンクするために、IPアドレスを

<links> 
    <link>A</link> 
</links> 

を使用しています。私は私のgithubのレポにソリューションをプッシュします。

関連する問題