node.js - 当我使用 PM2 + Docker 启动我的应用程序时,只需运行并退出

标签 node.js linux docker pm2

我试着关注this tutorial ,但是当我执行我的应用程序时,什么也没有发生

我的 Dockerfile(已更改)

FROM keymetrics/pm2-docker-alpine:7

WORKDIR /api

RUN npm install pm2 -g

ADD . .

CMD ["pm2-docker", "ecosystem.config.js"]

还有我的ecosystem.config.js..

const maxMemory = process.env.WEB_MEMORY || 80;
const nodeEnv = process.env.NODE_ENV || 'development';

module.exports = {
  apps: [
    {
      name: 'api',
      script: 'api/index.js',
      node_args: [
        '--optimize_for_size', '--max_old_space_size=400', '--gc_interval=100',
      ],
      instances: process.env.WEB_CONCURRENCY || -1,
      exec_mode: 'cluster',
      max_memory_restart: `${maxMemory}M`,
      env: {
        PORT: process.env.PORT || 3000,
        NODE_ENV: nodeEnv,
      },
    },
  ],
};

运行docker之后..

docker run -d -p 3000:3000 --name api api:latest

没有任何反应..按照 docker ps -a

的结果
CONTAINER ID        IMAGE                                                           COMMAND                  CREATED             STATUS                      PORTS                      NAMES
167cb2769438        api:latest   "pm2-docker start ..."   50 seconds ago      Exited (1) 47 seconds ago

已添加

如果我在没有-d选项的情况下运行..

> docker run -it -p 3000:3000 --name api api:latest
module.js:472
    throw err;
    ^

Error: Cannot find module 'commander'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.Module._load (module.js:418:25)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/usr/local/lib/node_modules/pm2/lib/CLI/RuntimeCLI.js:4:17)
    at Module._compile (module.js:571:32)
    at Object.Module._extensions..js (module.js:580:10)
    at Module.load (module.js:488:32)
    at tryModuleLoad (module.js:447:12)
    at Function.Module._load (module.js:439:3)
[vagrant@localhost]$

最佳答案

删除 RUN npm install pm2 -g,因为 PM2 已经捆绑到 pm2-docker-alpine

关于node.js - 当我使用 PM2 + Docker 启动我的应用程序时,只需运行并退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44578917/

相关文章:

c++ - 为什么我得到 "error: ‘pthread_delay_np’ was not declared in this scope”?

docker - 重启系统后Docker PS消失了

docker - 如何通过 env 文件传递​​ docker run 中的环境变量?

node.js - Mongoose save() 不返回 promise

node.js - session ID cookie 应该签名吗?

javascript - 收到 package.json 的解析错误。验证为有效 json

linux - 从不同环境中检索数据时的不同结果

linux - Bash - 查找早于 X 分钟的文件并移动它们

ssl - 创建 TLS 配置时出错 (v1.3.7)

sql-server - 使用 Node.js 从 MSSQL 到 DynamoDB 的数据传输