pm2 развертывание производства и постановки на одну и ту же службу с разными именами приложений - PullRequest
0 голосов
/ 31 мая 2019

Я бы хотел развернуть этапы и производство на одном и том же сервере с разными именами, но я не вижу возможности добиться этого, учитывая документацию для файлов экосистемы pm2.вот мой ecosystem.config.js ниже:

module.exports = {
  apps : [{
    name: 'frontend',
    script: 'server/index.js',
    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    instances: 1,
    autorestart: true,
    watch: false,
    max_memory_restart: '256M',
    env: {
      NODE_ENV: 'development'
    },
    env_staging: {
      NODE_ENV: 'staging',
      PORT: 3001
    },
    env_production: {
      NODE_ENV: 'production',
      PORT: 3002
    }
  }],

  deploy : {
    production : {
      user : '<redacted>',
      host : ['<redacted>'],
      ref  : 'origin/master',
      repo : '<redacted>',
      path : '<redacted>/production',
      'pre-deploy': 'git fetch --all',
      'post-deploy' : 'npm install -d && npm run build:production && pm2 reload ecosystem.config.js --env production',
      'post-setup' : 'npm install -d && npm run build:production && pm2 reload ecosystem.config.js --env production'
    },
    staging : {
      user : '<redacted>',
      host : ['<redacted>],
      ref  : 'origin/development',
      repo : '<redacted>',
      path : '<redacted>/staging',
      'pre-deploy': 'git fetch --all',
      'post-deploy' : 'npm install -d && npm run build:staging && pm2 reload ecosystem.config.js --env staging',
      'post-setup' : 'npm install -d && npm run build:staging && pm2 reload ecosystem.config.js --env staging'
    }
  }
};

Есть ли в любом случае, я мог бы достичь этого, учитывая, что конфигурация deploy не дает name в качестве опции?

Ответы [ 2 ]

1 голос
/ 07 июня 2019

Я сделал другое имя приложения в своем проекте, но я не использую pm2 deloy, надеюсь, что вы можете использовать один и тот же способ для другого имени приложения в зависимости от среды,

Сначала вам нужно запустить команду deloy из npmсценария, потому что вы можете прикрепить к нему env)

{
  "scripts": {
    "deloy:staging": "cross-env NODE_ENV=staging pm2 deploy ecosystem.config.js staging",
    "deloy:prod": "cross-env NODE_ENV=production pm2 deploy ecosystem.config.js production",
  },
  "devDependencies": {
    "cross-env": "^5.2.0",
  }
}

Затем просто используйте NODE_ENV для создания другого имени приложения в ecosystem.config.js:

const name = 'frontend_' + process.env.NODE_ENV
module.exports = {
  apps : [{
    name: name,
    script: 'server/index.js',
    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    instances: 1,
    autorestart: true,
    watch: false,
    max_memory_restart: '256M',
    env: {
      NODE_ENV: 'development'
    },
    env_staging: {
      NODE_ENV: 'staging',
      PORT: 3001
    },
    env_production: {
      NODE_ENV: 'production',
      PORT: 3002
    }
  }],

  deploy : {
    production : {
      user : '<redacted>',
      host : ['<redacted>'],
      ref  : 'origin/master',
      repo : '<redacted>',
      path : '<redacted>/production',
      'pre-deploy': 'git fetch --all',
      'post-deploy' : 'npm install -d && npm run build:production && pm2 reload ecosystem.config.js --env production',
      'post-setup' : 'npm install -d && npm run build:production && pm2 reload ecosystem.config.js --env production'
    },
    staging : {
      user : '<redacted>',
      host : ['<redacted>],
      ref  : 'origin/development',
      repo : '<redacted>',
      path : '<redacted>/staging',
      'pre-deploy': 'git fetch --all',
      'post-deploy' : 'npm install -d && npm run build:staging && pm2 reload ecosystem.config.js --env staging',
      'post-setup' : 'npm install -d && npm run build:staging && pm2 reload ecosystem.config.js --env staging'
    }
  }
};
1 голос
/ 07 июня 2019

Почему бы тогда не создать разные приложения с именами различий?

[{
    name: 'frontendDev',
    script: 'server/index.js',
    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    instances: 1,
    autorestart: true,
    watch: false,
    max_memory_restart: '256M',
    env: {
      NODE_ENV: 'development'
    },
  }, {
    name: 'frontendStag',
    script: 'server/index.js',
    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    instances: 1,
    autorestart: true,
    watch: false,
    max_memory_restart: '256M',
    env_staging: {
      NODE_ENV: 'staging',
      PORT: 3001
    },
  },{
    name: 'frontendProd',
    script: 'server/index.js',
    // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
    instances: 1,
    autorestart: true,
    watch: false,
    max_memory_restart: '256M',
    env_production: {
      NODE_ENV: 'production',
      PORT: 3002
    }
  }],

Вы также можете разбить файлы различий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...