4

我正在努力弄清楚如何在灵活的谷歌应用引擎上部署多个 nodejs 服务。

我正在使用多个带有 firebase-queue 的 nodejs 类来处理我的任务。现在,我正在使用我的 package.json 来触发立即启动所有内容。然而,这已经成为问题。我希望能够将更改推送到一个特定的服务/脚本,而不必停止所有其他脚本。

我的 package.json 目前看起来像这样:

"scripts": {
    "task1": "node ./src/task1.js",
    "task2": "node ./src/task2.js",
    "start": "npm-run-all -p task1 task2"
}

我正在使用不同的 .yaml 文件来确定我要推送的构建变体(调试或发布),但我发现很难单独部署每个任务。我找到了有关如何在 python 中执行此操作的文档,但在 nodejs 上没有找到。有没有人有什么建议?

4

2 回答 2

7

(回答我自己的问题,非常感谢贾斯汀的帮助)

我特别遇到了动态更改脚本以在我的package.json中启动的问题。我发现package.json可以使用' $ '访问环境变量

包.json:

"scripts": {
    "start": "node $SCRIPT_TO_RUN"
}

我的服务.yaml

runtime: nodejs
vm: true
api_version: 1
instance_class: B4
manual_scaling:
  instances: 1
service: cart-monitor-dev

env_variables:
  SCRIPT_TO_RUN: './src/mytask.js'

然后部署使用:

gcloud app deploy myService.yaml
于 2016-12-14T17:13:13.450 回答
4

这正是存在 App Engine 服务的原因:) 您可以为要部署的每个服务创建一个 {serviceName}.yaml。然后,gcloud app deploy service.yaml逐一呼唤。这会在同一个应用程序中创建多个服务。有关示例,请参见:

https://github.com/JustinBeckwith/cloudcats

希望这可以帮助!

于 2016-11-30T06:16:43.363 回答