Docker构建不会因失败的运行命令而停止

时间:2019-05-01 17:50:24

标签: docker dockerfile docker-build

我在Dockerfile中有这个

RUN eval `ssh-agent -s` && ssh-add /root/.ssh/id_rsa

我看到:

  

命令'/ bin / sh -c eval ssh-agent -s && ssh-add   /root/.ssh/id_rsa'返回了非零代码:1

,但docker构建将继续直到到达ENTRYPOINT,然后退出。如果其中一个RUN命令以非零值退出,如何使docker构建过程停止?

1 个答案:

答案 0 :(得分:3)

Docker不会将运行命令的不同部分连接为逻辑AND。它更像是OR

执行此操作:

RUN eval `ssh-agent -s` 
RUN ssh-add /root/.ssh/id_rsa

TL; DR: 一个简短的例子说明为什么:

这一直持续到最后:

FROM alpine
RUN exit 0
RUN echo Hello

这会在第一个RUN之前停止:

FROM alpine
RUN exit 1
RUN echo Hello

此操作一直运行到最后(如您的示例):

FROM alpine
RUN exit 0 && exit 1
RUN echo Hello