首页 > 解决方案 > 使用 Docker 和 PM2 在 google kubernetes 引擎上部署 Nodejs 应用程序

问题描述

我有一个 Nodejs 应用程序并使用 Babel 来启用 ES6 功能。我可以在本地系统上以开发模式运行它。我想使用 PM2 将它部署到 Kubernetes。

当我尝试使用 process.json 使用 PM2 运行它时出现错误。

/bin/bash:1
15:59:52 23|app   | (function (exports, require, module, __filename, __dirname) { ����
15:59:52 23|app   |                                                               ^
15:59:52 23|app   | SyntaxError: Invalid or unexpected token
15:59:52 23|app   |     at new Script (vm.js:85:7)
15:59:52 23|app   |     at createScript (vm.js:266:10)
15:59:52 23|app   |     at Object.runInThisContext (vm.js:314:10)
15:59:52 23|app   |     at Module._compile (internal/modules/cjs/loader.js:698:28)
15:59:52 23|app   |     at Object.Module._extensions..js (internal/modules/cjs/loader.js:749:10)
15:59:52 23|app   |     at Module.load (internal/modules/cjs/loader.js:630:32)
15:59:52 23|app   |     at tryModuleLoad (internal/modules/cjs/loader.js:570:12)
15:59:52 23|app   |     at Function.Module._load (internal/modules/cjs/loader.js:562:3)

这是我的 process.json

{
    "apps": [
        {
            "name": "app",
            "script": "./dist/bin/www.js --env production",
            "exec_mode": "cluster",
            "instances": 0,
            "max_restarts": 20,
      "env": {
          "NODE_ENV": "production"
      },
      "env_production": {
          "NODE_ENV": "production"
      }
        }
    ]
}

当我运行此命令pm2 ./dist/bin/www.js --env production时,它工作正常,但是当我尝试使用 process.json 运行它时,pm2 start process.json --no-daemon它会抛出上述错误。

我正在本地系统上尝试它,但是当我使用 Dockerfile 部署到 gcloud 时也会发生这种情况kubectl

有人可以指出我应该尝试寻找的正确方向。

标签: node.jsdockerkubernetesgcloudpm2

解决方案


试试这个 process.json:

{
    "apps": [
        {
            "name": "app",
            "script": "./dist/bin/www.js",
            "exec_mode": "cluster",
            "instances": 0,
            "max_restarts": 20,
      "env": {
          "NODE_ENV": "development"
      },
      "env_production": {
          "NODE_ENV": "production"
      }
        }
    ]
}

命令行:

pm2 start process.json --no-daemon --env production

推荐阅读