将可变参数馈送到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