【问题标题】:Upload a Java and node.js project to Google AppEngine at once一次将 Java 和 node.js 项目上传到 Google AppEngine
【发布时间】:2017-02-23 10:34:09
【问题描述】:

首先,我在 AndroidStudio 中设置了一个 Java 模块,我将它上传到我的 GoogleAppEngine 服务器,效果很好。 (Android Studio - 构建 - 将模块部署到 Google App Engine)

现在我还想将附加的 node.js 服务器上传到同一个 App Engine 实例。该代码还应访问在 Java 模块中创建的 firebase 数据库。为了上传 node.js 代码,我按照 Google 的快速入门教程使用 gcloud app deploy

据我所知,这会在后端 flex 环境中创建一个新版本,从而禁用我现有的 Java 代码。

所以我的问题是:如何将 node.js 服务器添加到现有实例?我想我必须在 Android Studio 项目中这样做,而不是在gcloud app deploy 中。例如,如何创建一个新模块,以便 node.js 服务器在子文件夹中可用?

【问题讨论】:

  • 请澄清您所说的“实例”是什么意思。它是 GAE 实例(如按实例小时计费)还是您实际上是指 GAE 应用程序?
  • 我的意思是 GAE 实例。更具体地说,当您上传 Java 代码时,您可以在 GAE 后端的“版本”下看到一个新的 Java 版本。如果我随后通过 gcloud-command 进行部署,我会在“版本”下看到一个新的节点版本,该版本处于活动状态。这意味着可见的 Java 版本不再处于活动状态。我想要实现的是在一个版本中上传代码,以便两个代码部分都处于活动状态。我想我必须在 Java 项目文件夹中包含 node.js 的东西,并可能通过 web.xml 部署描述符引用它们。但我不知道该怎么做。

标签: android node.js google-app-engine


【解决方案1】:

您将无法“将额外的 node.js 服务器上传到同一个 App Engine 实例”,因为它是不同的语言(和环境),因此它们不能位于同一个服务/模块(一个实例只能执行一个模块的代码)。

您需要以不同的方式命名服务/模块,以免它们在部署时相互覆盖。之后就可以独立部署了。

在 node.js 模块的 app.yaml 文件中检查您的 service: 配置。从 General settings:

服务:服务名称

创建服务时需要。对于默认服务是可选的。每个 服务,并且每个版本都必须有一个名称。名称可以包含数字, 字母和连字符。它不能超过 63 个字符,并且 不能以连字符开头或结尾。为每个人选择一个唯一的名称 服务和每个版本。不要在服务和服务之间重用名称 版本。

注意:服务以前称为“模块”。

你的 module 和/或 service 配置在你的 java 模块的 appengine-web.xml 文件中。

另见Microservices Architecture on Google App Engine

【讨论】:

  • “您需要以不同的方式命名服务/模块,以便它们在部署时不会相互覆盖” - 这是否意味着它们同时在线,尤其是节点代码仍然是否也能够访问在 Java 环境中访问的 firebases 数据库?您能否提供一个链接来解释该模块是如何定义的?谢谢!
  • 是的,他们一起工作。请参阅更新答案中的链接。
猜你喜欢
  • 2010-11-15
  • 1970-01-01
  • 1970-01-01
  • 2014-01-05
  • 1970-01-01
  • 1970-01-01
  • 2012-07-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多