簡體   English   中英

測試容器:在測試容器內構建 docker 圖像

[英]Testcontainers: build docker image inside testcontainer

我正在使用testcontainers為我的 CI/CD 服務創建一些測試。

其中一項測試包含在測試容器內構建的 docker 個圖像。 它失敗,因為它無法訪問 docker 守護進程。

問題是如何共享本地 docker 守護進程到 testcontainer 或者如何以最簡單的方式在 testcontainer 內部運行 docker doemon?

所以,最后我通過將docker-dind圖像作為附加容器運行來解決它

@Slf4j
@NoArgsConstructor
public class DockerContainer {
    public static final String HOST = "test.docker.env";
    private static GenericContainer<?> container;

    public static void init() {
        container = new GenericContainer<>(DockerImageName.parse("docker:20.10.14-dind"))
                .withNetworkAliases(HOST)
                .withNetwork(SHARED)
                .withExposedPorts(2375)
                .withEnv("DOCKER_TLS_CERTDIR", "")
                .withPrivilegedMode(true)
                .withLogConsumer(new Slf4jLogConsumer(log));
    }

    public static GenericContainer<?> getInstance() {
        if (container == null) {
            init();
        }
        return container;
    }
}

並將 docker 主機添加到我的 CI 容器中:

this.container.dependsOn(DockerContainer.getInstance());
this.container.addEnv("DOCKER_HOST", String.format("tcp://%s:2375", DockerContainer.HOST));

現在效果很好

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM