[解決済み] PM2を使ってアプリに実行引数を渡すには?
2023-05-04 13:39:50
質問
私は
pm2
を使用していますが、引数を渡すことができません。私が使っているコマンドは
pm2 start app.js -- dev
. これはforeverで動作しますが。
どのように解決するのですか?
本チケットに記載されている方法で解決できます。 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);
そして、シェルを使って環境に変数を設定するのです。
export NODE_ENV=staging
pm2 start app.js
環境変数は、セッションと同じ時間だけ存続します。ですから、この環境変数を
~/.bashrc
ファイルに設定する必要があります。これにより、セッションごとに変数が設定されます。
PM2 では デプロイメントシステム があり、アプリがデーモン化される前に毎回環境変数を設定することができます。POSIX システムのデーモンは一般的にこのようにパラメータを受け取りますが、これはパラメータがプロセスとともに失われないためです。あなたの状況を考えると、それはそれほど重要ではないかもしれませんが、良い習慣です。
さらに、実稼働時のダウンタイムを防ぐために、可能な限りローカルでの停止/起動、および再起動(クラスタモードの場合)を検討する必要があります。
関連
-
[解決済み] Jestを使用して1つのファイルをテストするにはどうすればよいですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] forEachループでasync/awaitを使用する
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsアプリケーションをデバッグするにはどうすればよいですか?
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] Node.jsで現在のスクリプトのパスを取得するにはどうしたらいいですか?
-
[解決済み] npmスクリプトへのコマンドライン引数の送信
-
[解決済み] ExpressJS アプリケーションをどのように構成するか?
-
[解決済み] express.js で HTTPS を有効にする
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ExpressJSとMeteorJSの比較【終了しました
-
[解決済み】Nodejsの解決方法:Error: ENOENT: そのようなファイルまたはディレクトリがありません
-
[解決済み】Mongooseで、日付でソートするにはどうしたらいいですか?(node.js)
-
webpack ENOENTソリューションの起動
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み] Passport JSのreq.isAuthenticated()はどのように実装されていますか?[クローズド]
-
[解決済み] Node.jsで「btoaが定義されていない」エラーが発生する
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] エラーです。Expressでビューの検索に失敗しました
-
[解決済み] Express.js req.bodyが未定義です。