gpt4 book ai didi

deployment - Strongloop slc 部署环境变量并发症

转载 作者:行者123 更新时间:2023-12-04 13:39:38 27 4
gpt4 key购买 nike

我一直在使用 slc run --detach --cluster "cpu"通过自定义 init.d/app.conf 脚本部署环回应用程序,但希望转而使用强-pm,按照建议。

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

目前,我在 server/config.local.jsserver/datasources.local.js 中设置了特定于应用程序的配置,最重要的是应用程序应该使用的端口监听连接。这可以完美地使用 slc run 进行本地开发和远程部署进行登台,我所做的就是为每个不同的应用程序设置不同的环境变量:

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
}

当我使用strong-pm进行部署时,我无法控制这个端口,它总是设置为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

我发现,当使用新的环境变量重新部署时,strong-pm 完全忽略了 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

3001!不是我想要的 3033,并且在 config.local.js 中指定。有没有办法明确控制这个?我不想每次部署应用程序时都需要运行 slc 检查命令来确定 nginx 上游 block 的端口。如果能够通过服务名称指定监听端口,那就太棒了。

FWIW,这是一个 AWS 实例,该实例将托管指向单独数据库和不同端口的演示和临时应用程序。

最佳答案

strong-pm 仅设置一个 PORT 环境变量,应用程序负责遵守该变量。

基于loopback-boot/lib/executor:109 ,看起来环回实际上更喜欢PORT环境变量而不是配置文件中的值。在这种情况下,您最好的选择似乎是:

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

关于deployment - Strongloop slc 部署环境变量并发症,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30493897/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com