私はpm2を使用してアプリを起動していますが、引数を渡すことができません。私が使用しているコマンドはpm2 start app.js-devです。これは永遠に機能しますが。
このチケットに記載されているように行うことができます: https://github.com/Unitech/pm2/issues/1
ただし、環境を渡す場合は、環境変数を活用することを検討してください。これにより、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);
次に、シェルを使用して環境内の変数を設定します。
export NODE_ENV=staging
pm2 start app.js
環境変数は、セッションが続く限り続きます。そのため、変数を永続化するには、そのユーザーの~/.bashrc
ファイルで設定する必要があります。これにより、セッションごとに変数が設定されます。
PM2には deploy system があり、アプリをデーモン化する前に毎回環境変数を設定できます。これは、POSIXシステムのデーモンが通常パラメーターを受け取る方法です。これらのパラメーターはプロセスで失われないためです。あなたの状況を考えると、それほど重要ではないかもしれませんが、それは良い習慣です。
さらに、本番環境でのダウンタイムを防ぐために、ローカルでの停止/起動、および可能な限り再起動(クラスターモードの場合)を検討する必要があります。
CLIからノード引数を渡したい場合
pm2 start myServer.js --node-args="--production --port=1337"
。
編集済み
--
の後に引数を追加できます
pm2 start app.js -- --prod
deploymemt のセールドキュメント。
プロセスで引数を定義することは可能です。
以下のように、args
キーを使用してecosystem.config.js
で新しいプロセスを定義できます。
{
name : 'my-service',
script : './src/service.js',
args : 'firstArg secondArg',
},
{
name : 'my-service-alternate',
script : './src/service.js',
args : 'altFirstArg altSecondArg',
}
ここで、2つのプロセスは同じファイル(service.js
)を使用しますが、異なる引数を渡します。
これらの引数はservice.js
内で処理されることに注意してください。私の場合、最初の引数を取得するためにprocess.argv[2]
を使用しただけです。
--
の後に引数を渡すことで、スクリプトに引数を送信できます。例:pm2 start app.js -i max -- -a 23 // Pass arguments after -- to app.js
CLIでpm2からnodejsにパラメーターを渡すには、次の2つの方法があります。
どちらの方法でも、これらの値はprocess.argv
(['dev'、 '-port = 1234'])に存在します
pm2 ドキュメントから
//Inject what is declared in env_production
$ pm2 start app.js --env production
//Inject what is declared in env_staging
$ pm2 restart app.js --env staging