【问题标题】:How can I deploy only one specific nodeJS app to one specific environment with PM2?如何使用 PM2 仅将一个特定的 nodeJS 应用程序部署到一个特定的环境?
【发布时间】:2020-07-05 22:07:52
【问题描述】:

我在 Digital Ocean 上部署了两个 nodejs 应用程序,使用 PM2,我正在学习。 我想知道如何单独更新我的应用(服务)。

目前我的 pm2 配置如下所示:

// ecosystem.config.js
module.exports = {
  apps: [
    {
      name: `app1`,
      script: './app1.js',
      // ...
    },
    {
      name: `app2`,
      script: './app2.js',
      // ...
    }
  ],

  deploy: {
    production: {
      key: '',
      user: 'admin',
      host: '',
      ref: '',
      repo: '',
      path: '/home/admin/app/prod',
      'post-deploy': './deploy.sh production'
    },
    development: {
      key: '',
      user: 'admin',
      host: '',
      ref: '',
      repo: '',
      path: '/home/admin/app/development',
      'post-deploy': './deploy.sh development'
    },
  }
}

我可以按环境进行部署,例如 pm2 deploy production
但是,我可以像pm2 deploy development app2 这样只更新app2 吗?

【问题讨论】:

    标签: node.js deployment digital-ocean pm2


    【解决方案1】:

    你有很多方法可以做到这一点,对我来说,我总是在客户端文件夹和服务器文件夹中创建生态系统文件,然后在根文件夹中创建发布生态系统文件,例如:

    • 客户端
      • ecosystem.config.js
    • 服务器
      • ecosystem.config.js
    • ecosystem.config.js

    根生态系统文件,如:

      deploy: {
        frontend: {
          ...other,
          path: '/app/easyv_spaceship',
          'post-deploy': 'cd ./client && npm install && npm run build'
        },
        backend: {
          ...other,
          path: '/app/easyv_spaceship',
          'post-deploy': 'cd ./server && npm install && npm run tsc && pm2 startOrRestart ecosystem.config.js --env production'
        }
      }
    

    希望这能启发你。

    【讨论】:

    • 目前我的应用程序位于同一个 Git 存储库中,因此它们可以共享代码。我正在使用环境变量选择需要运行的服务。在您的示例中,前端和后端是否在同一个仓库中?
    • 是的,它们在同一个仓库中。 PM2只需拉取repo,然后执行deploy命令,我认为您可以在deploy中添加pro-app1pro-app2之类的命令,然后在deploy命令中执行不同的shell脚本。
    猜你喜欢
    • 2022-06-14
    • 1970-01-01
    • 1970-01-01
    • 2019-03-22
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-26
    相关资源
    最近更新 更多