程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了具有入口点变量扩展和CMD参数的Docker容器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决具有入口点变量扩展和CMD参数的Docker容器?

开发过程中遇到具有入口点变量扩展和CMD参数的Docker容器的问题如何解决?下面主要结合日常开发的经验,给出你关于具有入口点变量扩展和CMD参数的Docker容器的解决方法建议,希望对你解决具有入口点变量扩展和CMD参数的Docker容器有所启发或帮助;

使用/bin/sh -c "script"语法时,-c参数之后的所有内容都将成为脚本的参数。您可以使用/ bin / sh脚本$0并将其$@作为/ bin / sh脚本的一部分:

ENTRYPOINT ["/bin/sh", "-c", "exec /usr/bin/mycmd --token=$MY_TOKEN $0 $@"]
CMD ["pull", "stuff"]

请注意,您还可以将入口点更改为添加到运行的映像的exec /usr/bin/mycmd --token=$MY_TOKEN "$@"外壳程序脚本,然后使用docker的exec语法执行该外壳程序脚本:

ENTRYPOINT ["/entrypoint.sh"]

解决方法

我想创建一个充当可执行文件的Docker映像,用户为其传递令牌作为环境变量。可执行文件具有用户应通过dockers
CMD传递的子命令(认为git通过Env进行身份验证)。但是,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中设置它。

大佬总结

以上是大佬教程为你收集整理的具有入口点变量扩展和CMD参数的Docker容器全部内容,希望文章能够帮你解决具有入口点变量扩展和CMD参数的Docker容器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: