Как использовать только одну конфигурацию docker -maven-plugin для Docker контейнера и Docker хоста? - PullRequest
0 голосов
/ 05 августа 2020

В моем приложении 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 и для машин разработчика?

...