Docker环境变量可以用作动态入口点运行时参数吗?

时间:2019-07-11 18:37:14

标签: docker dockerfile

我正在尝试对运行nodeJS的Dockerfile进行参数化,以便可以在docker run上自定义入口点命令的args,以便可以维护一个容器工件,该容器工件可以随某些运行时args的变化而重复部署。 >

我尝试了几种不同的方法,最基本的是

ENV CONFIG_FILE=default.config.js

ENTRYPOINT node ... --config ${CONFIG_FILE}

我发现的是,即使我使用docker run传递新值,默认值也仍保留在-e命令中。如

docker run -e CONFIG_FILE=desired.config.js

我尝试过的另一种Dockerfile形式是:

ENTRYPOINT node ... --config ${CONFIG_FILE:-default.config.js}

不使用ENV指令来指定环境变量,而是使用bash扩展来指定默认值(如果发现不存在或为null)。虽然这给了我相同的行为。

最后,我最后尝试做的是创建一个包含相同入口点命令的bash脚本文件,然后将其ADD移至docker上下文并在我的ENTRYPOINT中对其进行调用。而且这似乎也产生了相同的行为。

我正在尝试的可能吗?

编辑:

这是一个最小的dockerfile,可以为我重现此行为:

FROM alpine

ENV CONFIG "no"

ENTRYPOINT  echo "CONFIG=${CONFIG}"

这是构建命令:

docker build -f test.Dockerfile -t test .

这是运行命令,尽管有no arg,它仍会回显-e

docker run -t test -e CONFIG=yes

一些其他详细信息, 我正在使用OSX sierra的Docker版本运行18.09.2, build 6247962

0 个答案:

没有答案
相关问题