You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

运行Docker容器时,如何向npm run start传递参数?

正确传递Node.js应用参数到Docker容器的方法

问题原因

你的Dockerfile中ENTRYPOINT使用了shell形式(ENTRYPOINT npm run start),这种写法会让Docker在shell环境中执行命令,导致传递的参数无法被npm正确识别为启动脚本的参数(npm需要通过--来区分自身参数和脚本参数)。

解决方案

方案一:修改Dockerfile为exec格式(推荐)

将Dockerfile中的ENTRYPOINT改为exec数组格式,确保参数能正确传递:

# 替换原有的ENTRYPOINT行
ENTRYPOINT ["npm", "run", "start"]

重新构建镜像:

docker build -t demo:latest .

之后用以下命令启动容器,参数即可正确传递给应用:

docker run demo -- --host "127.0.0.1" --port 3306 --user "root"

方案二:不修改Dockerfile,直接用shell包裹完整命令

如果不想重新构建镜像,可以通过sh -c直接执行完整的启动命令:

docker run demo sh -c 'npm run start -- --host "127.0.0.1" --port 3306 --user "root"'

说明

你之前尝试的命令中-- -- host多了一个空格(--和host之间不应有空格),且因shell形式的ENTRYPOINT导致参数解析异常,以上两种方法均可解决该问题。

内容的提问来源于stack exchange,提问作者Victor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 18:32:12