我在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不会将运行命令的不同部分连接为逻辑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