如何在Docker容器中运行JUnit测试,并且当JUnit失败时使容器启动失败?

3

我希望在Docker容器中运行Junit测试,并且如果测试失败,容器也会失败。

在我的Docker文件中,我有:

FROM maven:3.2-jdk-7-onbuild
CMD mvn verify

我是从运行docker compose命令的Go CI服务器开始进行的。我看到启动了一个后台执行线程,测试开始运行,并且在maven进程启动时,Go CI服务器已经收到了OK。测试运行完成并出现一些失败,但此时Go服务器已经显示了绿色的“一切正常”状态。问题的一部分是我需要EXEC命令阻塞,直到测试完成运行。我的问题是:如何在Docker容器中运行JUnit测试,并在JUnit测试失败时使容器启动失败?

容器不会失败,因为它是隔离的。你为什么喜欢在容器中运行单元测试?听起来像是你在尝试运行集成测试。 - khmarbaise
1个回答

0
你应该使用 docker-compose run 而不是 docker-compose uprun 命令会阻塞,直到容器中的进程退出,并返回相同的退出状态。

谢谢,这很有帮助,但我没有看到rundocker-compose run中表现出阻塞行为。它的工作方式类似于docker-compose up -d(即像守护进程一样)。 - hawkeye
嗯,只有 run -d 应该会这样做,所以我不确定你看到了什么。你能包含一些输出吗? - dnephin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接