【问题标题】:Run Quarkus tests with TestContainers using WSL2 + Podman使用 WSL2 + Podman 使用 TestContainers 运行 Quarkus 测试
【发布时间】:2022-02-12 20:41:32
【问题描述】:

随着 Windows 上 Docker Desktop 的许可证更改,我正在寻找替代方案。 Podman + WSL2 似乎对我有用。除了我的 Quarkus 测试中的 Testcontainers。

我可以通过在 WSL2 (podman system service -t 0 tcp:localhost:8880) 中启动 podman 系统服务并设置 DOCKER_HOST 环境变量 (DOCKER_HOST=tcp://localhost:8880) 在 WSL2 中运行我的测试。

现在这可行,但并不是我真正需要的,因为在我的公司,我们使用 VSCode、IntelliJ 和 Eclipse 进行开发。我希望能够从这些 IDE 中运行测试。在运行 Quarkus 测试时,有什么方法可以将 podman uri(来自 WSL)传递到我在 Windows 中的 IDE?

如果有人知道任何其他可与 TestContainers 一起使用的 docker 桌面替代品,那也太棒了。我试过 Rancher Desktop,但它卡住了,测试最终超时。

【问题讨论】:

    标签: quarkus wsl-2 testcontainers podman


    【解决方案1】:

    您必须在 Windows 主机上安装 podman-remote 软件包,然后将其配置为使用 tcp://WSL2_IP:8880 (podman documentation),最后为程序创建别名 docker -> podman.exe

    现在您可以像往常一样运行 docker 命令...docker psdocker run 等。但这并不意味着所有工具都可以开箱即用。你必须调整它。

    例如对于testcontainers,您必须在主机上设置环境变量:

    PowerShell

    [System.Environment]::SetEnvironmentVariable("DOCKER_HOST", "tcp://WSL2_IP:8880", [System.EnvironmentVariableTarget]::User)
    [System.Environment]::SetEnvironmentVariable("TESTCONTAINERS_CHECKS_DISABLE", "True", [System.EnvironmentVariableTarget]::User)
    [System.Environment]::SetEnvironmentVariable("TESTCONTAINERS_RYUK_DISABLED", "True", [System.EnvironmentVariableTarget]::User)
    

    附:所有这些变量都是 docker 为你设置的,但从现在开始你必须自己做。

    【讨论】:

    • 到目前为止一切顺利,谢谢 :) 只是现在我遇到了使用环境变量的测试容器的问题。它适用于没有任何环境变量的容器,但如果容器以 'withEnv' 启动,测试会崩溃:Status 500: {"cause":"incorrect volume format, should be [host-dir:]ctr-dir[:option]","message":"fill out specgen: tcp://localhost:8880:/var/run/docker.sock:rw: incorrect volume format, should be [host-dir:]ctr-dir[:option]","response":500}
    • 上一个问题其实是设置不正确,重做就成功了
    【解决方案2】:

    我们使用 Docker 的各种解决方案运行 testcontainers-java tests

    我不知道与仅 Windows 的设置相比,在 WSL 中运行是否有很大变化。 一般来说,Testcontainers 不仅仅依赖于 CLI 命令,而且在兼容的 Docker 环境中效果最好。根据该实验的结果,您可以尝试minikube

    【讨论】:

      【解决方案3】:

      enter image description here以 IntelliJ 为例,您可以通过“运行/调试配置”设置 DOCKER_HOST env var,它可以完美运行。

      【讨论】:

        猜你喜欢
        • 2020-08-10
        • 2021-05-16
        • 2017-12-19
        • 2021-11-22
        • 2021-10-25
        • 2021-08-26
        • 2021-12-22
        • 2019-04-22
        • 1970-01-01
        相关资源
        最近更新 更多