将parameter passing给dockerfile @ runtime

基本上想要能够运行具有指定参数的docker集装箱

dockerfile:

FROM nodesource/node:4.0 ADD package.json package.json RUN npm install ADD . . ENTRYPOINT ["node","index.js"] 

我基本上运行rabbitMQ的教程代码: https ://www.rabbitmq.com/tutorials/tutorial-one-javascript.html

唯一的区别是,对我而言,而不是一个硬编码的阙名称,我使用$ args

 var argv = require('minimist')(process.argv.slice(2)); var q = argv.que; 

我运行我的nodejs的cmd行方式是: node index.js --que 1

它的工作正常。 然而,从docker run它似乎并没有工作(参数不正确读取)

我努力了:

docker run -it mydockerimage --que (my queue name)

但得到错误:

来自守护进程的错误响应:oci运行时错误:exec:“–que”:在$ PATH中找不到可执行文件。

什么是我写这个docker图像的正确方法,以便我可以在运行时传递参数?

我知道我可以通过重写 – 入口点,但理想情况下,我想input更less…这甚至有可能吗?

通过组合ENTRYPOINTCMD可以为图像指定默认的可执行文件,同时还可以为用户可能覆盖的可执行文件提供默认参数。

 FROM nodesource/node:4.0 ADD package.json package.json RUN npm install ADD . . ENTRYPOINT ["node","index.js"] CMD ["--que","1"] 

所以, --que 1 docker run的默认行为是发送参数--que 1

 docker run -it mydockerimage 

但是你可以覆盖这个值

 docker run -it mydockerimage --que 2