我正在使用PM2來管理節點上的幾個微應用的執行。我的本地機器CWD
上:有沒有辦法通過改變PM2中的環境來切換cwd - node.js
目標: 但是我想能夠自動切換設置,並根據應用程序在執行環境cwd
值
例如應該是~/user/pm2
,而在服務器上它需要是E:\Programs\PM2
。
有沒有辦法做到這一點使用JSON配置選項與PM2?有沒有更好的方法來管理不同環境下的變量?
我正在使用PM2來管理節點上的幾個微應用的執行。我的本地機器CWD
上:有沒有辦法通過改變PM2中的環境來切換cwd - node.js
目標: 但是我想能夠自動切換設置,並根據應用程序在執行環境cwd
值
例如應該是~/user/pm2
,而在服務器上它需要是E:\Programs\PM2
。
有沒有辦法做到這一點使用JSON配置選項與PM2?有沒有更好的方法來管理不同環境下的變量?
你可以保存一個shell腳本,比如說pm2_dev.sh
包含cd
命令作爲第一行。
#!/bin/bash
cd /foo/bar
pm2-dev run my-app.js
OR您可以添加輸入到你的腳本:
# pm2_dev.sh ~/user/pm2
文件應該是:
#!/bin/bash
cd $1
pm2-dev run my-app.js
如果你不想通過shell腳本來改變環境,你可以按照documentation way:
{ "apps" : [{ "script" : "worker.js", "watch" : true, "env": { "NODE_ENV": "development", }, "env_production" : { "NODE_ENV": "production" } },{ "name" : "api-app", "script" : "api.js", "instances" : 4, "exec_mode" : "cluster" }] }
當運行應用程序,你應該使用--env
選項as it is written here:
--env指定環境得到 具體ENV變量(JSON聲明)
最後你可以用根據當前環境條件返回參數的js對象中的配置:
module.exports = (function(env){
if(env === 'development')
return { folder: '~/user/pm2' };
else if(env === 'production')
return { folder: 'E:\Programs\PM2' };
}(process.env.NODE_ENV));
然後,您可以要求配置文件並訪問它,以確保它始終返回正確的配置。
我一直希望有一種方法來使用pm2 json配置文件來完成它,但是我會把它作爲一個備選方案。 – Deltatuk
沒關係,但請注意,它遵循節點,grunt和npm的慣例,在一個命令/腳本下附加一組配置設置。盡力而爲。 – morels