gpt4 book ai didi

java - 测试容器在本地工作但在构建服务器上失败(DinD)

转载 作者:行者123 更新时间:2023-12-05 05:42:02 27 4
gpt4 key购买 nike

我们最近在 docker-image 中迁移到 jenkins 并不是那么顺利。

我们有一个(过于?)复杂的设置,其中一个 docker 容器启动一个新容器,并且之前通过共享主机文件夹与新容器共享数据。

本质上,我们让 Jenkins 在 docker 中运行并构建 java 项目。其中一个项目将启动几个 Testcontainer,将一个 jar 从一个项目传输到一个容器,该容器将启动一个新容器并通过一个卷共享这个 jar。该设置在不涉及 jenkins 的本地计算机上运行(因此没有“外部”docker 层)。

Our build server "setup"

在我们的构建服务器上,一切似乎都很顺利,jar 文件在“jobexecutor”上找到,但无法使用标准 java -jar ourFile.jar 运行,失败并显示“无法访问 jarfile” ".

docker socket 一直共享,可安装文件被验证存在于“jobcontroller”图像上,大小正确,权限为 777。它也在 jobexecutor 上找到。

调试非常缓慢/困难,因为这只发生在构建服务器上,而不是本地。

想法?还是这对于 DinD 场景来说太复杂了?

最佳答案

如果您正在共享 Docker 套接字,则您不是在运行传统的 DinD 设置,而是在运行 Docker-Wormhole 模式,这意味着容器将是兄弟容器并且安装文件变得更加复杂,因为它现在发生在相对于主机和与其他容器无关。

如果您愿意分享使用 Testcontainer 并执行测试的 Java 代码,我可以编辑此答案以使其更详细,但一般来说,您应该能够通过使用 withCopyFileToContainer() 进行更便携的设置(可能与 copyFileFromContainer() 一起,取决于用例)来自 Testcontainers 的方法,而不是文件夹安装。此方法将使用 docker cp 机制传输文件或文件夹,并且非常便携且易于使用,与 Docker 环境无关。

关于java - 测试容器在本地工作但在构建服务器上失败(DinD),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72146242/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com