【问题标题】:strongloop slc deploy env var complicationsstrongloop slc 部署环境变量并发症
【发布时间】:2023-04-11 07:28:01
【问题描述】:

我一直在使用slc run --detach --cluster "cpu",通过自定义 init.d/app.conf 脚本部署环回应用程序,但我希望按照建议转为使用 strong-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 上游块的端口。如果能够通过服务名称指定监听端口,那就太棒了。

FWIW,这是在一个 aws 实例上,它将托管指向不同数据库和不同端口的演示和暂存应用程序。

【问题讨论】:

    标签: deployment loopbackjs strongloop


    【解决方案1】:

    strong-pm 只设置一个PORT 环境变量,应用程序负责兑现。

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

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

    【讨论】:

    • 是的,我的 datasources.local.js 配置文件正在被使用(我在应用程序无法连接到 mongo 时查看了日志,然后当我使用 env-set 更改配置时,它停止出错并启动监听),但未使用 config.local.js 端口值。无论 port: 设置什么,strong-pm 都会让应用在 3001 上监听。
    • 根据文档中的这个页面,端口自动设置为3000+服务ID,并根据部署应用的数量和顺序而有所不同。 docs.strongloop.com/display/SLC/… 有没有办法覆盖它?
    • 是的,我注意到 PORT 也破坏了一切。当我通过 strong-pm 部署时,我仍然不确定如何传递或设置单独的 PORT 值。我应该在哪里设置 PORT 或 npm_config_port 以便 strong-pm 为我要运行的每个应用程序选择一个不同的应用程序?当我使用 slc ctl set-env 它仍然被忽略并且仍然使用 3000+N。
    • 啊,当我使用slc ctl env-set 设置 npm_config_port 时,可以正常工作;我的吸收有点慢。
    猜你喜欢
    • 1970-01-01
    • 2022-10-23
    • 2019-11-21
    • 1970-01-01
    • 2017-06-25
    • 2015-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多