是否有可能使用Google App Engine托管多个应用程序?

Mak*_*zik 37 google-app-engine

我是否需要为每个新的Google App Engine应用程序新项目创建?或者还有其他方法可以在一个项目中拥有多个应用程序吗?

编辑:删除"额外的问题"

Art*_*ike 70

这很容易完成services.部署到App Engine时,app.yaml使用以下行来定义文件:service: my-second-app

完成另一个Node.js服务的app.yaml文件:

service: my-second-app
runtime: nodejs
env: flex
automatic_scaling:
   min_num_instances: 1
Run Code Online (Sandbox Code Playgroud)

部署时,请从包含app.yaml文件的目录中执行此操作:

gcloud app deploy
Run Code Online (Sandbox Code Playgroud)

或者,如果您想在yaml文件中为您的seond app定义配置:

gcloud app deploy my-second-app.yaml
Run Code Online (Sandbox Code Playgroud)

新服务将与您的default服务一起部署,并将获得自己的URL,如:

https://my-second-app-dot-my-project-name.appspot.com
Run Code Online (Sandbox Code Playgroud)

  • 只是为了澄清:您不必事先创建新服务,如果您只需在 app.yaml 中输入新服务名称(即服务: my-second-app ),它就会在部署时创建。 (2认同)

Tom*_*Tom 21

我认为有一张图片(价值千言万语)呈现Google App Engine服务层次结构是一个好主意.

App Engine概述

图片来自App Engine页面概述.

因此,您的Google云端项目下有一个应用程序.应用程序可以拥有一个或多个服务.服务松散耦合,独立开发和维护.对于许多人来说,它可能会令人困惑,因为他们可能将服务称为应用程序.谷歌改变了命名惯例以使用微服务命名法.

服务可以具有不同的版本(例如v1.0.1,v1.0.2,v2.0.0等),并且版本可以具有处理新工作流量的多个实例.

显然,服务,版本和实例的数量存在限制,它们依赖于App Engine概述中指定的区域和免费/付费版本.

  • 感谢您的精彩解释!对我帮助很大。 (2认同)

Lip*_*pis 11

每次在App Engine上传内容时,都必须定义版本名称,并且最多可以为同一个应用程序ID上载25个不同的版本.

每个版本都有一个如下所示的直接URL:

http://version.application-id.appspot.com
Run Code Online (Sandbox Code Playgroud)

或者如果想要HTTPS

https://version-dot-application-id.appspot.com
Run Code Online (Sandbox Code Playgroud)

如果省略URL中的版本,则会获得从仪表板中选择的默认版本.

因此理论上,您可以在同一个项目下运行多达25个不同的应用程序,但它们将共享相同的数据存储区.


另一种选择是使用App Engine模块.

  • 没有理由为不同的应用程序使用版本.在同一个项目中可以有任意数量的应用程序,并且仍然有25个版本的项目. (2认同)

Mak*_*zik 6

现在回到这个问题,我发现正确的方法是使用App Engine 服务(以前称为模块)。每个服务可以有自己的版本等。

编辑:将专用名称模块更新为服务

  • “模块”被重命名为“服务”。 (2认同)

And*_*gin 5

您可以使用相同的projectId运行无限数量的“应用程序”。例如,当用户点击服务器上的不同 URL 时,您可以加载不同的客户端应用程序:/mainApp/setup/admin等。

这些应用程序将有权访问相同的数据存储区,因此您必须小心地将它们分开,例如,通过使用命名空间或不同的实体类型 - 如果您确实需要分隔它们。在上面的示例中,“Setup”和“Admin”可能是访问相同数据的不同应用程序。

请注意,只有当这些应用程序密切相关时,在同一个项目中拥有多个应用程序才是一个好主意。否则,即使您使用不同的 App Engine 模块来运行每个应用程序的服务器端代码,也会变得非常不方便。