如何在docker容器中运行基于@testcontainers
的测试用例?
我有一个简单的Spring Boot应用程序,它具有集成测试(组件级),使用testcontainers
与容器交互。测试用例正在破坏来自外部容器(本地机器)的罚款。
我们正在容器中运行所有内容,并且build正在docker jenkins映像上运行。Docker文件正在创建jar,然后创建image。@testcontainers
找不到安装的docker。下面是我的docker文件。
FROM maven:3.6-jdk-11-openj9
VOLUME ["/var/run/docker.sock"]
RUN apt-get update
RUN apt-get -y install docker.io
COPY . /usr/src/app
WORKDIR /usr/src/app
RUN mvn -Dmaven.repo.local=/root/m2 --batch-mode -f pom.html" target="_blank">xml clean package
EXPOSE 8080
CMD ["/bin/bash"]
处理这个案子最好的办法是什么?我想在mvn构建阶段使用docker文件运行我的组件级集成测试。
下面的参考没有帮助我。https://www.testcontainers.org/support_docker_environment/continuous_integration/dind_patterns/
这不是完整的答案,但您应该从容器中启用对docker守护进程的访问。在容器中安装Docker并运行它的守护进程是很复杂的,所以不推荐使用。Docker可以通过Unix套接字或TCP(我假设主机系统是Linux)进行控制。
测试容器如何查找Docker:默认情况下,它尝试连接到Unix套接字/var/run/docker.sock
。您可以通过设置环境变量(docker_host
)指定其他套接字路径或TCP地址。
docker如何公开它的控件API:默认情况下通过Unix套接字/var/run/docker.sock
(在主机上)。通过向docker start命令添加以下参数(启动docker的命令位置取决于系统),您可以在其他地方公开docker API:-h fd://-h tcp://127.0.0.1:2376
。请注意,您可以指定多个选项。-h fd:/
-是默认值,tcp://127.0.0.1:2376
-告诉Docker侦听本地主机端口2376。
如何使Docker在您的容器中可用(“Docker中的Docker”):如果您启用了网络访问--除了上面提到的将Testcontaners指向它之外,不需要进行额外的配置。如果要使用默认Unix套接字,则可以通过volume
选项将其映射(挂载)到容器中:
docker run --volume /var/run/docker.sock:/var/run/docker.sock your-image-id-here
正如文档中所说,如果我想在docker中运行测试容器,我必须考虑以下几点: null
问题内容: 我正在使用无头firefox在docker内部运行python-selenium测试。 在这些测试中,我可以使用selenium方法来制作屏幕快照,但是我可以在整个测试过程中使用某些东西来“视频”记录虚拟显示(使用几种测试方法的多个测试脚本,其中有许多启动和停止的webdriver)。 那么如何录制完整的测试会话呢? 附录 :我找到了一个网页,该网页准确描述了我的需求:这里。不幸的是,
问题内容: 我在Docker容器中运行Jenkins。我想知道Jenkins容器也可以作为Docker主机吗?我正在考虑的是从Jenkins内部为每个集成测试构建启动一个新的Docker容器(以启动数据库,消息代理等)。因此,在完成集成测试后应关闭容器。是否有理由避免以这种方式从另一个Docker容器内部运行Docker容器? 问题答案: 如果可能,应尽可能避免在Docker内部运行Docker(
我在Docker的容器里运行Jenkins。我想知道是否可以让Jenkins容器也作为Docker主机?我考虑的是从Jenkins内部为每个集成测试构建启动一个新的docker容器(启动数据库、消息代理等)。因此,容器应该在集成测试完成后关闭。有没有理由以这种方式避免从另一个docker容器内部运行docker容器?
我想知道是否可以在Linux环境下运行Windows docker容器。
问题内容: 目前,我在需要连接到camunda的docker容器内运行一个node.js应用程序,该容器在另一个容器中运行。 我使用以下命令启动容器 这两个应用程序现在都在运行,我可以通过在端口8000上导航到主机的IP来访问camunda,运行wget 还会返回camunda页面。使用和键入我的应用程序容器时,我无法访问camunda。相反,我得到以下错误: 当我使用将我的应用程序容器链接到ca