Google App Engine灵活环境中的多个NodeJS服务/模块

时间:2016-10-16 14:07:29

标签: node.js google-app-engine firebase app-engine-flexible firebase-queue

我正在努力弄清楚如何灵活地在谷歌应用引擎上部署多个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上没有。有没有人有任何建议?

2 个答案:

答案 0 :(得分:5)

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

我特意遇到动态更改脚本以在 package.json 中启动的问题。 我发现 package.json 可以使用' $ '

来访问环境变量

的package.json:

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

myService.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

答案 1 :(得分:4)

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

https://github.com/JustinBeckwith/cloudcats

希望这有帮助!