加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:49:44 所属栏目:安全 来源:网络整理
导读:我有一个基于onbuild标记的docker图像,我想用它作为构建的模板,但我希望子图像能够设置ENV var来修改ONBUILD指令 基onbuild: FROM root-imageRUN mkdir -p /app/srcUNBUILD COPY . /app/src/ONBUILD WORKDIR /app/srcONBUILD RUN ./build ${TARGET_APP}ONBU

我有一个基于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 /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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读