Docker:基于环境变量编辑Docker-entrypoint.sh

Docker:基于环境变量编辑Docker-entrypoint.sh,docker,Docker,我用entrypoint.sh创建了一个Docker映像 #/垃圾箱/垃圾箱 set-e [...] ./app/脱水/脱水-c-t dns-01-k'/app/脱水/hook.sh'-x 这是Dockerfile的最后一部分 [...] ENTRYPOINT [ "docker-entrypoint.sh" ] 我用一只手启动容器 docker run-it--rm-v$(pwd)/data:/app/脱水--name cfhookbash sinerba/cfhook

我用entrypoint.sh创建了一个Docker映像

#/垃圾箱/垃圾箱
set-e
[...]
./app/脱水/脱水-c-t dns-01-k'/app/脱水/hook.sh'-x
这是Dockerfile的最后一部分

[...]
ENTRYPOINT [ "docker-entrypoint.sh" ]
我用一只手启动容器

docker run-it--rm-v$(pwd)/data:/app/脱水--name cfhookbash sinerba/cfhookbash:latest

我想添加一个环境变量:

--env FORCE\u RENEW=true

因此,动态编辑我的入口点如下(伪代码)

如果$FORCE\u RENEW&&FORCE\u RENEW==TRUE,则
./app/脱水/脱水-c-t dns-01-k'/app/脱水/hook.sh'-x
其他的
./app/脱水/脱水-c-t dns-01-k'/app/脱水/hook.sh'
(因此,根据环境添加参数X或no)


有可能吗?

在入口点shell脚本中,您可以在正常shell脚本语法中执行的任何操作都是合法的。我可以这样写:

更新选项=
如果[“$FORCE_RENEW”==TRUE];然后
更新选项=-x
fi
./app/脱水/脱水-c-t dns-01-k'/app/脱水/hook.sh'$RENEW\u OPT
如果您控制脱水应用程序,将其设置为直接理解
$FORCE\u RENEW
环境变量将比此命令行选项更容易设置。其机制将是特定于语言的,但是
docker run-e
设置了一个非常普通的环境变量

另一个选择是接受新技术。作为容器调用的“命令”部分传递的任何内容——
docker run
命令中图像名称之后的任何内容——都将作为参数传递给entrypoint脚本,您可以使用它将任意选项传递给主程序

#entrypoint.sh
#--不专门检查环境变量
#--“$@”展开为任何其他参数
./app/determinated/determinated-c-tdns-01-k'/app/determinated/hook.sh'$@“
#在图像名称后传递附加选项
docker run-it--rm
Sinerba/cfhookbash:最新版本\
-x

谢谢。我使用您的第一个选项;)