maven-docker-plugin: как получить IP-адрес контейнера
Я новичок в Docker и fabric8's maven-docker-plugin
, Я хочу провести несколько интеграционных тестов, используя два контейнера: один с развернутым веб-приложением, а другой с базой данных.
ОБНОВЛЕНИЕ: я могу запустить оба контейнера с помощью этих команд:
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
Этот докер-файл я использую:
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}
должно быть два свойства maven, имеющие IP-адрес контейнера базы данных и открытый порт. Как я могу выразить команду запуска, как я делаю в ручном примере, и чтобы мое веб-приложение узнало об IP-адресе базы данных, используя fabric8 maven-docker-plugin
?
ОБНОВЛЕНИЕ: я убираю некоторые беспорядки, которые я сделал в моем pom.xml и в dockerfile. Теперь я могу передавать аргументы, используя переменные окружения. Единственная оставшаяся проблема - я не могу получить IP-адрес контейнера базы данных, даже если он связан с контейнером веб-приложения. <run>...</run>
конфигурации.
Вот мой проект. я использую maven 3.3.9
, docker 1.12.5
и fabric8's maven-docker-plugin 0.19.0
,
1 ответ
Ладно, я понял. Как вы связываете контейнер A
в контейнер B
, Docker добавить A
в качестве имени хоста для B
"s etc/hosts
файл. Таким образом, вам не нужно выяснять IP-адрес контейнера, вы можете просто использовать его имя. То же самое происходит на ткани8 maven-docker-plugin
, который является отличным плагином. Ты используешь
<links>
<link>A</link>
</links>
связывать A
в B
а также B
можешь использовать A:27017
достичь обслуживания на A
Выставленный порт, так по моему pom
Я передаю строку A
переменной среды вместо контейнера A
IP-адрес. Я выдвигаю решение для моего репозитория github.