strongloop slc部署env var并发症

Bri*_*ian 2 deployment strongloop loopbackjs

我一直在使用自定义init.d/app.conf脚本部署环回应用程序slc run --detach --cluster "cpu",但是我想按照建议使用strong-pm.

但我遇到了一些限制,我正在寻找有关如何复制我目前熟悉的设置的任何指导.

目前,我设置的特定应用程序的配置中server/config.local.jsserver/datasources.local.js,最重要的是PORT在该应用程序应该监听上的连接.这适用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
  }
}
Run Code Online (Sandbox Code Playgroud)

config.local.js:

module.exports = {
  port: process.env.PROTEUS_API_PORT
}
Run Code Online (Sandbox Code Playgroud)

当我使用strong-pm进行部署时,我无法控制此端口,并且它总是设置为3000 + N,其中N仅根据部署时分配给应用程序的服务ID递增.

所以即使我部署然后设置env使用

slc ctl -C http://localhost:8701 env-set proteus-demo PROTEUS_API_PORT=3033 PROTEUS_DB=demo APP_DOMAIN=demo.domain.com
Run Code Online (Sandbox Code Playgroud)

我看到强-pm在使用新的env vars重新部署时完全忽略了PROTEUS_API_PORT:

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
Run Code Online (Sandbox Code Playgroud)

3001!不像我想要的那样3033,并且在config.local.js中指定.有没有办法明确地控制它?我不想在每次部署应用程序时都需要运行slc检查命令来确定我的nginx上游块的端口.能够通过服务名称指定listen PORT也很棒.

FWIW,这是一个aws实例,它将托管指向不同数据库和不同PORT的应用程序和暂存应用程序.

Rya*_*ham 5

strong-pm只设置一个PORT环境变量,应用程序负责表达.

基于回环启动/ lib目录/执行人:109,看来回送实际上更喜欢PORT超过在配置文件中的值的环境变量.在这种情况下,似乎你最好的选择是:

  • 将一个端口传递给app.listen()自己
  • 设置一个较高优先级的环境变量,例如npm_config_port(通常通过设置npm start --port 1234).

  • 啊,当我使用`slc ctl env-set`设置npm_config_port时,按照我的意愿工作; 我的吸收速度有点慢. (2认同)