如何使用pm2将参数传递给应用程序?

我正在使用pm2启动我的应用程序,但无法将参数传递给它。我正在使用的命令是pm2 start app.js-dev。尽管这永远有效。

回答:

您可以按照此票证所述进行操作:https :

//github.com/Unitech/pm2/issues/13

尽管如果通过环境,则可能需要考虑利用环境变量。使用此工具,您可以创建一个变量,该环境中的任何进程都可以访问该变量process.env.*

因此,您有一个配置文件config.json

{

"dev": {

"db": {

"hosts":["localhost"],

"database": "api"

},

"redis": {

"hosts": ["localhost"]

}

},

"staging": {

"db": {

"hosts":["1.1.1.1"],

"database": "api"

},

"redis": {

"hosts": ["2.2.2.2"]

}

},

"production": {

"db": {

"hosts":["1.1.1.1", "1.1.1.2", "1.1.1.3"],

"database": "api"

},

"redis": {

"hosts": ["2.2.2.2", "2.2.2.3"]

}

}

}

然后,您导入配置:

var config=require('./config.json')[process.env.NODE_ENV || 'dev'];

db.connect(config.db.hosts, config.db.database);

然后,您将通过shell在您的环境中设置变量:

export NODE_ENV=staging

pm2 start app.js

环境变量将持续到您的会话。因此,您必须在该~/.bashrc用户的文件中设置它,变量才能持久。这将在每个会话中设置变量。

PM2具有一个部署系统,通过该系统,您可以在每次守护程序之前设置环境变量。这是POSIX系统中守护程序通常采用参数的方式,因为这些参数不会随过程丢失。考虑到您的情况,它可能无关紧要,但它是一种很好的做法。

此外,您应该考虑在本地停止/启动,并在可能的情况下尽可能重新启动(如果处于群集模式),以防止生产中的停机时间。

以上是 如何使用pm2将参数传递给应用程序? 的全部内容, 来源链接: utcz.com/qa/434385.html

回到顶部