2015-05-27 29 views
2

我一直在使用slc run --detach --cluster "cpu"通過自定義init.d/app.conf腳本部署環迴應用程序,但希望轉移到使用strong-pm,建議如下。strongloop slc部署環境變化複雜化

但我遇到了一些限制,我正在尋找關於如何複製我目前熟悉的設置的任何指導。

目前我在server/config.local.jsserver/datasources.local.js之內設置了特定於應用程序的配置,最重要的是應用程序應該在其上監聽連接的端口。這工作完全使用slc run地方發展和遠程部署分期,所有我做的是設置不同的Env瓦爾爲每個不同的應用:

datasources.local.js:

module.exports = { 
    "mysqlDS": { 
    name: "mysqlDS", 
    connector: "mysql", 
    host: process.env.PROTEUS_MYSQL_HOST, 
    port: process.env.PROTEUS_MYSQL_PORT, 
    database: process.env.PROTEUS_MYSQL_DB, 
    username: process.env.PROTEUS_MYSQL_USER, 
    password: process.env.PROTEUS_MYSQL_PW 
    } 
} 

config.local.js:

module.exports = { 
    port: process.env.PROTEUS_API_PORT 
} 

當我部署使用強時,我沒能控制這個端口,它總是被設置爲3000 + N,其中N是剛指針累加根據分配給應用程序的服務ID時,它的部署。

因此,即使當我部署,然後使用

slc ctl -C http://localhost:8701 env-set proteus-demo PROTEUS_API_PORT=3033 PROTEUS_DB=demo APP_DOMAIN=demo.domain.com 

設置ENV我看到強時完全忽略PROTEUS_API_PORT當它與新的ENV重新部署瓦爾:

ENV has changed, restarting 
Service "1" listening on 0.0.0.0:3001 
Restarting next commit Runner: commit 1/deploy/default/demo-deploy 
Start Runner: commit 1/deploy/default/demo-deploy 
Request (status) of current Runner: child 20066 commit 1/deploy/default/demo-deploy 
Request {"cmd":"status"} of Runner: child 20066 commit 1/deploy/default/demo-deploy 

3001!不像我想要的3033,並在config.local.js中指定。有沒有一種方法可以明確地控制它?我不想在每次部署應用程序時運行slc檢查命令來確定我的nginx上游塊的端口。如果能夠通過服務名稱來指定listen PORT,那將會很棒。

FWIW,這是一個aws實例,它將主持演示和臨時應用程序指向單獨的數據庫和不同的端口。

回答

5

strong-pm只設置一個PORT環境變量,應用程序負責遵守該環境變量。

根據loopback-boot/lib/executor:109,似乎環回實際上更喜歡環境變量在配置文件中的值的PORT環境變量。在這種情況下,它似乎你最好的選擇是要麼:

  • 傳遞一個端口到app.listen()自己
  • 設置優先級較高的環境變量之一,如npm_config_port(這通常通過npm start --port 1234設置)。
+0

是的,我的datasources.local.js配置文件正在使用(我看着日誌作爲應用程序無法連接到mongo,然後當我改變配置env-set,它停止錯誤,並開始收聽),但是config.local.js端口值沒有被使用。無論設置爲port :, strong-pm的應用程序都在3001上偵聽。 – Brian

+0

根據文檔中的此頁面,端口會自動設置爲3000+服務ID,並且根據多少和順序您部署應用程序。 HTTP://docs.strongloop。com/display/SLC /正在部署+ an +應用程序+到+ Process + Manager 有沒有辦法重寫這個? – Brian

+0

是的,我注意到PORT也暴露了一切。當我通過strong-pm進行部署時,我仍然不確定如何傳遞或設置單獨的PORT值。我應該在哪裏設置PORT或npm_config_port,以便strong-pm爲我想要運行的每個應用程序選擇一個不同的應用程序?當我使用slc ctl set-env時,它仍然被忽略,並且仍然使用3000 + N。 – Brian