如何创build使用envvariables的灵活的onbuild docker镜像?
我有一个基于onbuild
标记的onbuild
镜像,我想用作构build模板,但是我希望子镜像能够设置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
根据ONBUILD
文档, ONBUILD
步骤在FROM base-onbuild
子句之后立即运行,所以在ONBUILD
步骤TARGET_APP
中设置TARGET_APP
的ENV
语句未设置之前。
我也尝试通过TARGET_APP
docker build
的--build-args
parameter passingTARGET_APP
值,但是这也没有任何作用。
有没有另外一种方法可以设置variables并修改UNBUILD
步骤?
类似的问题: 用于子泊坞窗图像的ONBUILD部分的占位符字段
强制性arg
在你的问题中,我有一些适用于这种情况的东西,但是对于所有情况来说,这一切都不起作用。
在ONBUILD WORKDIR /app/src
之后的ONBUILD WORKDIR /app/src
,您将拥有:
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。
可选的参数
你可以通过在你的子目录的文件夹/ 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
- Kubernetes – 如何发送请求给所有的爪牙?
- docker群中的Couchbaseclosures
- 来自守护进程的错误响应:获取https://registry-1.docker.io/v2/:在192.168.65.1:53上拨号tcp:lookup registry-1.docker.io:没有这样的主机
- Docker守护进程连接到2375上的套接字
- 解决Apache Spark应用程序在Docker容器中以客户端模式运行的问题
- “docker容器中的groupadd:Command not found”,即使我安装了它并且我是root
- 生成失败:请确保远程分支存在(128)
- 如何正确地清理docker devicemapper文件夹?
- 从Windows使用公钥authentication连接到远程docker计算机