if-statement - 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
解决方案
文件只能使用指令访问图像COPY
,类似于您的RUN
.
cp
在命令中使用RUN
可用于移动文件,但前提是它们已经存在。
我建议您提取您可能需要的所有文件,然后根据您的论点删除不必要的文件夹。
完成该逻辑后,使用多阶段层将最终的完整文件集复制到干净的图像中
推荐阅读
- javascript - 在下面的 mongoose 模式中指定 ref 需要什么?如果我们不指定呢?
- ruby-on-rails - 如何使用 ImageMagick 读取 Elastic Beanstalk 中的 SVG 文件?
- javascript - 无法弄清楚如何编码这种映射情感和颜色
- c# - 在 JetBrains Rider 中更新 nuget 包的问题
- python - Google Dataflow - Apache Beam GroupByKey():复制/慢
- javascript - Eslint 在 React 组件中捕获潜在的空指针
- python - 如何绘制一年的平均值
- android - 我在 Android 中有一个填字游戏布局 - 如何添加小数字?
- ios - 通过 Twitter 对用户进行身份验证时出现 ERROR_WEB_USER_INTERACTION_FAILURE(Firebase - Swift)
- google-chrome - 谷歌浏览器在唤醒触摸屏时冻结,直到触摸网络外部或鼠标移动/单击或键盘按键才会响应