首页 > 解决方案 > Dockerfile 和 if 语句

问题描述

我有一个 Dockerfile,如果 Dockerfile 的比较正确,我想复制文件,但是在 docker build 和 docker run 之后,文件不存在于 docker 上,它缺少什么吗?

ARG A_ARG
RUN if [ "$A_ARG" = "toto" ]; then cp files/opt/toto.sh /opt; chmod +x /opt/toto.sh; fi


docker build --build-arg A_ARG=toto .
docker run id_contenair

标签: if-statementdockerfile

解决方案


文件只能使用指令访问图像COPY,类似于您的RUN.

cp在命令中使用RUN可用于移动文件,但前提是它们已经存在

我建议您提取您可能需要的所有文件,然后根据您的论点删除不必要的文件夹。

完成该逻辑后,使用多阶段层将最终的完整文件集复制到干净的图像中


推荐阅读