本站教程收集整理的这篇文章主要介绍了如何创建使用env变量的灵活的onbuild docker镜像?,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个基于onbuild标记的docker图像,我想用它作为构建的模板,但我希望子图像能够设置ENV var来修改ONBUILD指令
基onbuild:
FROM root-image
RUN mkdir -p /app/src
UNBUILD copY . /app/src/
ONBUILD workdir /app/src
ONBUILD RUN ./build ${TARGET_APP}
ONBUILD RUN cp ${TARGET_APP}/build/bin /app/bin
我的应用程序内:
FROM base-onbuild
ENV TARGET_APP my-app
CMD my-app
根据docker文档,ONBUILD步骤在FROM base-onbuild子句之后立即运行,因此在设置TARGET_APP的ENV语句之前,在ONBUILD步骤中没有设置TARGET_APP.
我也尝试通过docker build的–build-args参数传递TARGET_APP值,但这也没有任何效果.
还有另一种方法可以设置变量并修改UNBUILD步骤吗?
类似的问题:Placeholder field for the ONBUILD section for child docker images to use
最佳答案
强制性的arg
我在你的问题中有一些适用于这种情况的东西,但它不适用于所有情况.
在ONBUILD workdir / app / src之后的dockerfile中,你将拥有:
copY build_copy.sh /config
ONBUILD copY target_app.txt /config
ONBUILD RUN sh /config/build_copy.sh
文件build_copy.sh将包含以下行:
TARGET_APP=`cat /config/target_app.txt`
ONBUILD RUN ./build $TARGET_APP
ONBUILD RUN cp $TARGET_APP/build/bin /app/bin
文件target_app.txt应包含您要放入TARGET_APP的文本.
这将要求您在子图像中有一个文件target_app.txt.
可选的arg
您可以通过在子根目录中的文件夹/ config中放置“可选”文本文件并将ONBUILD更改为:
ONBUILD copY 便宜美国vps /config /config
您只需要该文件夹,其中的所有文件都是可选的.然后sHell脚本可以使用:
TARGET_APP_2=`cat /config/target_app.txt`
if [ -n "$TARGET_APP_2" ]
then
TARGET_APP=$TARGET_APP_2
else
TARGET_APP='default_app'
fi
本站总结
以上是本站教程为你收集整理的如何创建使用env变量的灵活的onbuild docker镜像?全部内容,希望文章能够帮你解决如何创建使用env变量的灵活的onbuild docker镜像?所遇到的程序开发问题。
如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。