我想创建一个Docker Image作为可执行文件,用户将令牌作为环境变量传递给它.可执行文件具有用户应通过docker CMD传递的子命令(通过Env考虑git和身份验证).但是,Docker不会将CMD附加到入口点.我的Dockerfile的相关部分如下所示:
ENTRYPOINT ["/bin/sh", "-c", "/usr/bin/mycmd --token=$MY_TOKEN"]
CMD ["pull", "stuff"]
Run Code Online (Sandbox Code Playgroud)
因此,如果此容器在没有任何CMD覆盖的情况下执行,并且secret作为MY_TOKEN变量,我会期望
mycmd --token=secret pull stuff
Run Code Online (Sandbox Code Playgroud)
被执行.如果用户使用覆盖启动容器,例如
docker run -it -e MY_TOKEN=secret myimage push junk
Run Code Online (Sandbox Code Playgroud)
我期待
mycmd --token=secret push junk
Run Code Online (Sandbox Code Playgroud)
被执行.但是,如上所述,只有mycmd --token=secret执行,CMD才会被忽略 - 无论我是在启动时覆盖它还是在Dockerfile中设置它.