基本上希望能够运行具有指定参数的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而不是硬编码的Que名称
var argv = require('minimist')(process.argv.slice(2));
var q = argv.que;
运行我的nodejs的cmd行方式是:
node index.js --que 1
并且工作正常。但是当从docker run
执行时,它似乎没有工作(args无法正确读取)
我试过了:
docker run -it mydockerimage --que (my queue name)
但收到错误:
来自守护程序的错误响应:oci运行时错误:exec:" - que": $ PATH中找不到可执行文件。
我编写此docker镜像的正确方法是什么,以便我可以在运行时传入参数?
我知道我可以通过覆盖--entrypoint来做到这一点,但理想情况下我想减少输入......这是否可能?
答案 0 :(得分:2)
组合ENTRYPOINT
和CMD
允许您为图像指定默认可执行文件,同时还为可执行文件提供可由用户覆盖的默认参数。
FROM nodesource/node:4.0
ADD package.json package.json
RUN npm install
ADD . .
ENTRYPOINT ["node","index.js"]
CMD ["--que","1"]
因此,docker run
的默认行为是发送参数--que 1
docker run -it mydockerimage
但您可以覆盖该值
docker run -it mydockerimage --que 2