2015-05-27 25 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