docker compose up——当测试中的系统快速崩溃时,退出代码无错误地从退出中退出
我正在使用docker compose up——当测试中的系统快速崩溃时,退出代码无错误地从退出中退出,docker,docker-compose,Docker,Docker Compose,我正在使用docker compose为我的docker图像创建一些集成测试docker compose有一个整洁的标志--exit code from,允许在测试完成后停止所有docker并从测试docker返回退出代码 但问题是,--退出代码从自动包括标志--在容器退出时中止。这是非常合乎逻辑的,但会产生以下问题: 正常情况 FROM alpine as development ENTRYPOINT [ "/bin/false" ] FROM alpine as test ENTRYPOI
docker compose
为我的docker图像创建一些集成测试docker compose
有一个整洁的标志--exit code from
,允许在测试完成后停止所有docker并从测试docker返回退出代码
但问题是,--退出代码从
自动包括标志--在容器退出时中止
。这是非常合乎逻辑的,但会产生以下问题:
正常情况
FROM alpine as development
ENTRYPOINT [ "/bin/false" ]
FROM alpine as test
ENTRYPOINT [ "/bin/sleep", "3" ]
FROM alpine as development
ENTRYPOINT [ "/bin/false" ]
FROM alpine as test
ENTRYPOINT [ "/bin/sleep", "3" ]
FROM alpine as development
ENTRYPOINT [ "/bin/false" ]
FROM alpine as test
ENTRYPOINT [ "/bin/sleep", "3" ]
docker compose.yml
version: "3.5"
services:
sut:
build:
context: .
target: development
test:
build:
context: .
target: test
然后跑
docker-compose up --build --exit-code-from test
echo $? # print exit code from previous command
将返回退出代码0
我希望退出代码0的意思是:集成测试确实运行并且成功。
编辑:
在看到这个问题合并到
docker compose
1.22.0之后;我再次使用最新版本的docker compose(目前为1.24.1)运行,但仍然遇到了问题。这是迄今为止我找到的唯一解决方法。虽然不是最干净的解决方案,但它确实做到了:
docker-compose up --build --exit-code-from test | grep -q "_test_1 exited with code 0" $TMP
一个带有选项解析的干净bash脚本中的较长版本,显示docker compose的输出:我得到了docker-test_sut_1,代码1退出了我得到了docker compose版本1.23.2、docker py版本:3.6.0和docker
版本:18.09.2
确实是,但退出代码是0。在该命令之后运行echo$?
,该命令将打印退出代码。是的,确定,docker运行到底,没有错误,docker中的测试是nottest\u sut\u 1=测试docker下的系统,而不是测试docker。在测试完成之前,正在测试的系统错误退出。docker compose以退出代码0结束。。。这就是我现在所期望的,如果我运行测试。。。我想知道我的码头工人是否能胜任,但事实显然并非如此!