gpt4 book ai didi

javascript - 将参数传递给 dockerfile @runtime

转载 作者:行者123 更新时间:2023-11-29 21:20:52 25 4
gpt4 key购买 nike

基本上希望能够运行带有指定参数的 docker 容器

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

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(我的队列名称)

但出现错误:

Error response from daemon: oci runtime error: exec: "--que": executable file not found in $PATH.

编写此 docker 镜像以便我可以在运行时传递参数的正确方法是什么?

我知道我可以通过覆盖 --entrypoint 来做到这一点,但理想情况下我想输入更少......这甚至可能吗?

最佳答案

结合 ENTRYPOINTCMD 允许您为图像指定默认可执行文件,同时还为该可执行文件提供可能被用户覆盖的默认参数。

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

关于javascript - 将参数传递给 dockerfile @runtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38621064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com