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