我正在尝试参数化运行nodeJS的Dockerfile,以便可以在上自定义entrypoint命令的参数
docker run
因此,我可以维护一个容器工件,可以对一些运行时参数进行重复部署。
我试过几种不同的方法,最基本的是
ENV CONFIG_FILE=default.config.js
ENTRYPOINT node ... --config ${CONFIG_FILE}
我发现不管默认值是什么,都会保留在我的
码头工人赛跑
即使我使用
-e
传递新的价值观。例如
docker run -e CONFIG_FILE=desired.config.js
我尝试过的另一种Dockerfile形式是:
ENTRYPOINT node ... --config ${CONFIG_FILE:-default.config.js}
不使用
ENV
指令,但如果发现不存在或为null,则使用bash扩展指定默认值。这让我有了同样的行为。
最后,我尝试的最后一件事是创建一个包含相同entrypoint命令的bash脚本文件,然后
ADD
它将连接到docker上下文,并在我的
ENTRYPOINT
.这似乎也给出了同样的行为。
我所尝试的是可能的吗?
编辑:
下面是一个最小的dockerfile,它为我重现了这种行为:
FROM alpine
ENV CONFIG "no"
ENTRYPOINT echo "CONFIG=${CONFIG}"
以下是build命令:
docker build -f test.Dockerfile -t test .
下面是run命令,它会发出回声
no
尽管
-e
arg:
docker run -t test -e CONFIG=yes
一些额外的细节,
我在跑步
OSX sierra
用Docker版本的
18.09.2, build 6247962