将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…这甚至有可能吗?
通过组合ENTRYPOINT
和CMD
可以为图像指定默认的可执行文件,同时还可以为用户可能覆盖的可执行文件提供默认参数。
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