【发布时间】:2020-08-31 15:31:25
【问题描述】:
我正在尝试使用 Pm2 的部署过程将我的 Node.js 脚本部署到多个主机。
使用单个主机可以正常工作,并带有以下ecosystem.config.js 文件:
require("dotenv").config({ path: `./envs/.production.env` });
const path = require("path");
module.exports = {
apps: [
{
name: process.env.APP_NAME,
interpreter: process.env.NODE_PATH,
cwd: process.env.PROJECT_PATH
script: "dist/index.js",
instances: process.env.INSTANCES || 0,
exec_mode: "cluster",
env: {
...process.env,
},
},
],
deploy: {
production: {
user: "harrison",
host: process.env.HOST,
key: "~/.ssh/id_rsa",
ref: "origin/master",
repo: process.env.GIT_REPO,
path: process.env.PROJECT_PATH,
// Copy keys to server
"pre-deploy-local": `scp -Cr envs harrison@${process.env.HOST}:${process.env.PROJECT_PATH}/current`,
// Build app and restart PM2 processes
"post-deploy": `yarn install --ignore-engines && \
pwd && \
yarn prod:build && \
yarn prod:serve`,
},
},
};
为了将它部署到多个主机,PM2 文档非常简单:只需添加多个主机名。好的,很容易。在我的 .env 文件中,我使用了一系列用逗号分隔的 IP 地址,然后将它们拆分为我的配置文件中的一个数组,如下所示:
host: process.env.HOST.split(",");
但是,将我的 .env 文件复制到多个主机并不是那么容易。
如何将此生态系统文件的“预部署本地”部分配置为 scp 我的 .env 文件到每台主机?
【问题讨论】:
标签: javascript deployment environment-variables pm2 production