【发布时间】:2016-07-28 04:03:20
【问题描述】:
基本上希望能够运行带有指定参数的 docker 容器
码头文件:
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 的命令行方式是:
node index.js --que 1
并且工作正常。但是,当从 docker run 执行时,它似乎不起作用(args 读取不正确)
我试过了:
docker run -it mydockerimage --que (my queue name)
但出现错误:
来自守护进程的错误响应:oci 运行时错误:exec:“--que”: $PATH 中找不到可执行文件。
我编写这个 docker 镜像以便在运行时传递参数的正确方法是什么?
我知道我可以通过覆盖 --entrypoint 来做到这一点,但理想情况下我想少输入...这甚至可能吗?
【问题讨论】:
-
为什么不让它成为环境的一部分呢?然后你可以在 Dockerfile 中设置一个默认值或者使用
-e传递它。 -
您确定您的图像具有上述入口点,而不是 cmd?请与
docker inspect mydockerimage联系。 -
@BMitch 是的,当然,因为如果我通过
ENTRYPOINT ["node","index.js", "--que", "1"]它会正常工作 -
将完整列表传递给 CMD 也可以正常工作,但是您的 ENTRYPOINT 设置为这样,您不应该看到
--quefile not found 错误。
标签: javascript node.js docker