1

我的 Spring Boot 应用程序使用 ElasticSearch,因此我必须启动一个 ElasticSearch 实例进行集成测试。要启动ElasticSearch 的 Docker 容器,我使用docker-maven-plugin. 集成测试应该在 GitLab 和开发人员机器上运行。

我的代码适用于带有 Unix 套接字的 GitLab 的 Runner(Docker 容器)(请参阅使用 Docker 套接字绑定),但不适用于开发人员机器。

Docker 容器 ( ) 的内部 IP 地址对于172.17.0.2Docker Desktop for Windows(Docker 主机)是未知的,请参阅Docker Desktop for 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]

研究

  • 使用属性中的端口映射和 Docker 主机的 IP 地址docker.host.address,不适用于 Unix 套接字,请参阅5.2.9。等等
  • 使用host网络不适用于 Docker Desktop for Windows,请参阅使用主机网络

问题

是否可以只docker-maven-plugin为 GitLab 和开发人员机器使用一种配置?

4

0 回答 0