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 переменной среды вместо контейнера AIP-адрес. Я выдвигаю решение для моего репозитория github.

Другие вопросы по тегам