2017-02-25 67 views
0

我是Docker和fabric8的maven-docker-plugin的新手。我想用兩個容器做一些集成測試,一個用我的webapp部署,另一個用數據庫。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命令,該命令能夠使用使用maven-docker-plugin這兩個參數,其中${dbhost}${dbport}應該是具有數據庫容器IP地址和暴露端口的兩個maven屬性。 我該如何在手邊的示例中表達一個運行命令,並使用fabric8 maven-docker-plugin讓我的webapp知道數據庫IP地址?

更新: 我清理了一些混亂,我在我的pom.xml和dockerfile中做了。現在我可以通過使用環境變量來傳遞參數。 剩下的唯一問題是我無法獲取數據庫容器的IP地址,即使它被鏈接到webapp容器的<run>...</run>配置。

這是我的項目的pom。 我正在使用maven 3.3.9,docker 1.12.5和fabric8的maven-docker-plugin 0.19.0

+0

使用'--name'命名一個容器,使用'--link'將一個命名的外部容器鏈接到一個容器。如果外部容器已鏈接,則可以使用外部容器的名稱作爲它的IP地址。 –

+0

@ 200OK你好!我可以運行這兩個容器並通過docker-cli運行測試。我想通過maven來自動運行集成測試。我更新我的問題,所以應該更清楚。謝謝你的評論。 – Francesco

回答

0

好吧,我明白了。當您將容器A鏈接到容器B時,Docker將A作爲主機名添加到Betc/hosts文件中。所以你不需要弄清楚容器的IP地址就可以使用它的名字。 fabric8 maven-docker-plugin也是如此,這是一個很棒的插件。您可以使用

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

鏈接ABB可以使用A:27017A達到服務「暴露端s,所以在我pom我的環境變量,而不是容器A傳遞字符串A的IP地址。我推動我的github回購解決方案。