是否可以根据构建的值在 Dockerfile 中有条件地设置 ENV
变量 ARG
?
例如:类似的东西
ARG BUILDVAR=sad
ENV SOMEVAR=if $BUILDVAR -eq "SO"; then echo "hello"; else echo "world"; fi
更新:基于马里奥回答的当前使用情况:
ARG BUILD_ENV=prod
ENV NODE_ENV=production
RUN if [ "${BUILD_ENV}" = "test" ]; then export NODE_ENV=development; fi
但是,运行 --build-arg BUILD_ENV=test
然后进入主机,我仍然得到
docker run -it mycontainer bin/bash
[root@brbqw1231 /]# echo $NODE_ENV
production
原文由 Matthew Herbst 发布,翻译遵循 CC BY-SA 4.0 许可协议
是的,这是可能的,但您需要使用您的构建参数作为标志。您可以使用 shell 的 参数扩展 功能来检查条件。这是一个概念验证 Docker 文件:
测试构建: