В моем приложении Spring Boot используется ElasticSearch, поэтому мне нужно запустить экземпляр ElasticSearch для тестирования интеграции. Чтобы запустить контейнер Docker ElasticSearch , я использую docker-maven-plugin
. Интеграционный тест должен работать на GitLab и на машинах разработчиков.
Мой код работает на GitLab Runner (Docker контейнер) с сокетом Unix (см. Использовать Docker привязку сокета ), но не на машинах разработчика.
Внутренний IP-адрес контейнера Docker (172.17.0.2
) не известен с Docker Desktop для Windows (Docker хост), см. Сетевые функции в Docker Desktop для Windows.
Источник
<plugin>
<groupId>io.fabric8</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>0.33.0</version>
<configuration>
<registry>docker.elastic.co</registry>
<imagePullPolicy>always</imagePullPolicy>
<images>
<image>
<alias>elasticsearch</alias>
<name>elasticsearch/elasticsearch:7.6.2</name>
<run>
<env>
<discovery.type>single-node</discovery.type>
</env>
<wait>
<http>
<url>http://${docker.container.elasticsearch.ip}:9200</url>
<method>GET</method>
<status>200</status>
</http>
<time>60000</time>
</wait>
</run>
</image>
</images>
</configuration>
<executions>
<execution>
<id>docker:start</id>
<phase>pre-integration-test</phase>
<goals>
<goal>start</goal>
</goals>
</execution>
<execution>
<id>docker:stop</id>
<phase>post-integration-test</phase>
<goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
</plugin>
Дополнительная информация
Журналы
[INFO] DOCKER> Pulling from elasticsearch/elasticsearch
[INFO] DOCKER> Digest: sha256:59342c577e2b7082b819654d119f42514ddf47f0699c8b54dc1f0150250ce7aa
[INFO] DOCKER> Status: Image is up to date for docker.elastic.co/elasticsearch/elasticsearch:7.6.2
[INFO] DOCKER> Pulled elasticsearch/elasticsearch:7.6.2 in 2 seconds
[INFO] DOCKER> [elasticsearch/elasticsearch:7.6.2] "elasticsearch": Start container 121efac6ba65
[INFO] DOCKER> [elasticsearch/elasticsearch:7.6.2] "elasticsearch": Waiting on url http://172.17.0.2:9200 with method GET for status 200.
[ERROR] DOCKER> [elasticsearch/elasticsearch:7.6.2] "elasticsearch": Timeout after 60700 ms while waiting on url http://172.17.0.2:9200
[ERROR] DOCKER> Error occurred during container startup, shutting down...
[INFO] DOCKER> [elasticsearch/elasticsearch:7.6.2] "elasticsearch": Stop and removed container 121efac6ba65 after 0 ms
[ERROR] DOCKER> I/O Error [[elasticsearch/elasticsearch:7.6.2] "elasticsearch": Timeout after 60700 ms while waiting on url http://172.17.0.2:9200]
Research
- Использование сопоставлений портов и Docker IP-адреса хоста из свойства
docker.host.address
, не работает для сокетов Unix, см. 5.2.9. Подождите . - Использование сети
host
не работает для Docker Desktop для Windows, см. Использование сети хоста .
Вопрос
Можно ли использовать только одну конфигурацию docker-maven-plugin
для GitLab и для машин разработчика?