欢迎光临
我们一直在努力

如何创建使用env变量的灵活的onbuild docker镜像?

本站教程收集整理的这篇文章主要介绍了如何创建使用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镜像?所遇到的程序开发问题。

如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。