首页 > 解决方案 > 尝试使用 MEAN 应用程序的 3 个实例启动 pm2-runtime

问题描述

我正在尝试使用以下 Docker 命令在 Docker 容器中启动现有的 MEAN 堆栈应用程序:

CMD ["pm2-runtime", "-i", "3", "npm", "--", "run-script", "start:prod"]

该命令确实启动了 3 个 PM2 实例,但似乎 npm 部分没有运行 run-script 部分,并且在每个实例中都挂起以下消息:

Usage: npm <command>
where <command> is one of:
    access, adduser, bin, bugs, c, cache, completion, config,
    ddp, dedupe, deprecate, dist-tag, docs, edit, explore, get,
    help, help-search, i, init, install, install-test, it, link,
    list, ln, login, logout, ls, outdated, owner, pack, ping,
    prefix, prune, publish, rb, rebuild, repo, restart, root,
    run, run-script, s, se, search, set, shrinkwrap, star,
    stars, start, stop, t, tag, team, test, tst, un, uninstall,

如果我删除“-i”、“3”部分,它会以“fork”模式正确启动应用程序的 1 个实例。

考虑到将 NPM 与运行脚本一起使用,任何人都知道启动 3 个实例的正确语法是什么?

谢谢

标签: node.jsdockerdocker-composepm2docker-command

解决方案


--是一个bash特定的特性,表示命令行选项的结束。

但是,您不是在运行bash,而是调用pm2-runtime二进制文件并将参数传递给它。

因此,它本质上等同于使用--命令调用 npm。

我认为--可以删除它,它应该可以工作。


推荐阅读