我在运行后台任务的Docker容器中执行脚本时,没有得到我期望的返回码。
此示例泊坞窗文件突出显示了问题:
FROM ubuntu:latest
MAINTAINER Jakob H. Thomsen (jakob@gedefar.dk)
RUN echo "#!/bin/bash\nset -e\n\nls / &\nexit 1" > /start_script.sh
RUN chmod +x /start_script.sh
它在容器中创建以下文件/start_script.sh
:
#!/bin/bash
set -e
ls / &
exit 1
因为docker build -t jakob/test .
,所以运行docker run jakob/test cat /start_script.sh
和exit 1
会使返回代码为1。它不是,它是0,它是以某种方式因为ls / &
(如果删除该命令,则得到预期的返回码1)。
所以我的问题是为什么ls / &
会覆盖exit 1
命令的返回码?我尝试让exit 1
在后台运行,但它不会更改返回码...
由于我正在使用设置来运行Ruby规范,我真的依赖于最后一个命令的返回代码,所以我能做些什么来让Docker返回最后一个命令的返回码?
谢谢,我希望你能提供帮助,因为它花了很长时间来确定这些“错误”返回码的确切问题。