Ana içeriğe geç

Yeni bir işlem başlatırken

PM2, yeni bir işlem başlatırken ortamı bu sırayla enjekte edecektir:

  • Önce PM2 CLI, kendi ortamını kullanarak mevcut shell ortamınızı enjekte eder.
  • PM2 daha sonra ekosistem dosyasıyla yapılandırabileceğiniz ortamı enjekte eder:
module.exports = {
apps : [
{
name: "myapp",
script: "./app.js",
watch: true,
env: {
"NODE_ENV": "development",
}
}
]
}

Burada PM2'nin mevcut ortamı NODE_ENV=development eklemek için geçersiz kıldığını görebilirsiniz. Ancak farklı ortamları şu şekilde tanımlamak da mümkündür:

module.exports = {
apps : [
{
name: "myapp",
script: "./app.js",
watch: true,
env: {
"PORT": 3000,
"NODE_ENV": "development"
},
env_production: {
"PORT": 80,
"NODE_ENV": "production",
}
}
]
}

Burada varsayılan ortam env içerisindedir, ancak pm2 start ecosystem.config.js --env production kullanarak env_production'ı da tercih edebilirsiniz.

ipucu

İstediğiniz kadar ortam tanımlayabilirsiniz. Sadece kullanmak istediğiniz ortamın ( env_ sonrasındaki) adını --env ile geçmeyi unutmamalısınız.

Özel ortam değişkenleri

NODE_APP_INSTANCE (PM2 2.5 minimum)

NODE_APP_INSTANCE ortam değişkeni, işlemler arasında ayırım yapmak için kullanılır. Örneğin, bir cronjob'u sadece bir işlemde çalıştırmak istiyorsanız, process.env.NODE_APP_INSTANCE === '0' ifadesini kontrol edebilirsiniz.

İki işlem asla aynı numaraya sahip olamaz, bu durum pm2 restart ve pm2 scale komutlarından sonra da geçerlidir.
— PM2 Dokümantasyonu

NODE_APP_INSTANCE ismi ile node-config ile sorun yaşayabilirsiniz, bu nedenle instance_var seçenekleri ile yeniden adlandırabilirsiniz:

module.exports = {
apps : [
{
name: "myapp",
script: "./app.js",
watch: true,
instance_var: 'INSTANCE_ID',
env: {
"PORT": 3000,
"NODE_ENV": "development"
}
}
]
}

Bu durumda değişken aynı davranışı sergileyecek ancak process.env.INSTANCE_ID içerisinde olacaktır.

increment_var (PM2 2.5 minimum)

PM2'ye her kurulan örnek için bir ortam değişkenini artırmasını istemek için bir seçenek vardır. Örneğin:

module.exports = {
apps : [
{
name: "myapp",
script: "./app.js",
instances: 2,
exec_mode: "cluster",
watch: true,
increment_var: 'PORT',
env: {
"PORT": 3000,
"NODE_ENV": "development"
}
}
]
}

Bu örnekte, pm2 start ecosystem.config.js komutunu çalıştırdığımda:

  • PM2'nın her örnek için PORT değişkenini artırmak istediğimi görecektir.
  • Varsayılanın 3000 olarak tanımlandığını görür.
  • İlk örnek process.env.PORT = 3000 alacak ve ikinci örnek process.env.PORT = 3001 alacaktır.
not

Ayrıca, pm2 scale myapp 4 kullanırken de artırır, yeni örneklerin her biri 3002 ve 3003 olarak PORT değişkenine sahip olacaktır.