将可变参数馈送到Docker入口点
说我在Dockerfile中有这条线:
ENTRYPOINT ["/usr/src/app/node_modules/suman/cli.js","a","b","c"]
什么是以编程方式填充ab和c的最佳方式? 我不知道如何避免硬编码进入。
有一些方法来解决这个问题。 我可以将所有parameter passing给一个variables,然后硬编码一个variables,如下所示:
ENTRYPOINT ["/usr/src/app/node_modules/suman/cli.js","--all-args=${x}"]
但我坦率地不知道如何实现,如果可能的话,我宁愿使用第一个a,b,c模式来解决它。 任何人都知道如何做到这一点?
如果你想改变参数是什么,为什么不把它们传递给docker运行?
与ENTRYPOINT ["/usr/src/app/node_modules/suman/cli.js"]
:
docker run -ti yourimage abc
图像名称之后的参数将像传统参数一样传递。 在这里, cli.js
将接收它们作为argv
参数。
在docker run命令中使用双引号"
如果你想单个参数包含空格被正确处理。
我也可以build议你为Docker使用一个合适的入口点 ,这样CTR + C和STOP信号以及编程特性等更多的东西都可以得到更好的处理。
为了实现这一点,最好简单地省略Dockerfile中的ENTRYPOINT行,然后使用docker docker run
传入–entrypoint值,如下所示:
docker run --entrypoint="/usr/src/app/node_modules/suman/cli.js" --name ${container_name} ${image_tag} ${argz}
你可以在这里阅读关于覆盖入口点:
https://medium.com/@oprearocks/how-to-properly-override-the-entrypoint-using-docker-run-2e081e5feb9d