cra*_*igb 5 docker docker-onbuild
我有一个基本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
Run Code Online (Sandbox Code Playgroud)
我的应用程序内:
FROM base-onbuild
ENV TARGET_APP my-app
CMD my-app
Run Code Online (Sandbox Code Playgroud)
据泊坞窗文件的ONBUILD步骤操作,立即运行后的FROM base-onbuild条款,使前ENV,设置语句TARGET_APP在这样ONBUILD的步骤TARGET_APP未设置.
我也尝试TARGET_APP通过--build-args参数传递值,docker build但这也没有任何影响.
还有另一种方法可以设置变量并修改UNBUILD步骤吗?
类似的问题:ONBUILD部分的占位符字段,供子码头图像使用
我有一些适用于您问题中的情况的方法,但它不适用于一般情况下的所有情况。
在之后的 dockerfile 中ONBUILD WORKDIR /app/src,您将拥有:
COPY build_copy.sh /config
ONBUILD COPY target_app.txt /config
ONBUILD RUN sh /config/build_copy.sh
Run Code Online (Sandbox Code Playgroud)
文件 build_copy.sh 将包含以下行:
TARGET_APP=`cat /config/target_app.txt`
ONBUILD RUN ./build $TARGET_APP
ONBUILD RUN cp $TARGET_APP/build/bin /app/bin
Run Code Online (Sandbox Code Playgroud)
文件 target_app.txt 应包含您想要放入 TARGET_APP 的文本。这将要求您的子映像中有一个文件 target_app.txt。
您可以通过将“可选”文本文件放入子根目录中的文件夹 /config 并将 ONBUILD 更改为:
ONBUILD COPY /config /config
Run Code Online (Sandbox Code Playgroud)
然后您只需要该文件夹,其中的所有文件都是可选的。然后 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
539 次 |
| 最近记录: |