Docker构建不会在失败的运行命令上停止

问题描述 投票:0回答:1

我在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构建过程停止?

docker dockerfile docker-build
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.