【问题标题】:Deploy multiple applications from same project从同一个项目部署多个应用程序
【发布时间】:2025-11-27 11:55:02
【问题描述】:

如何部署来自谷歌云应用引擎中单个项目的相同或不同语言/运行时的多个应用程序?

【问题讨论】:

  • 那么问题是什么?
  • 抱歉误导性的语言。刚刚编辑。
  • 同时检查这是否违反服务条款第 3.3 (d) 节:cloud.google.com/terms
  • 不要这样想,因为我不打算“模拟或充当单个应用程序、帐户或项目(分别)或以其他方式访问服务以避免产生费用;”。我仍然想将它部署为两个不同的应用程序,不同的版本可以通过不同的 URL 访问。其次,谷歌云确实提供了在一个项目上部署多个服务的工具:cloud.google.com/appengine/docs/standard/python/…
  • 好的。但是您需要提供更多详细信息。您想要多项服务吗?多个应用程序?你的应用在做什么?有哪些困难?否则答案很简单(而且可能没用):是的 - 您只需根据需要重新编写/调整您的应用程序代码 :) 但请注意,根据您的应用程序细节,这可能是不可能的,或者可能需要大量工作。例如,跨多个应用共享数据存储需要额外的工作,跨应用的任务排队是不可能的。

标签: google-app-engine google-cloud-platform


【解决方案1】:

将多个服务部署到 Google Cloud App 引擎。

在app根目录下创建如下文件

创建包含内容的 app.yaml 文件:

runtime: nodejs14
service: default

创建包含内容的 myserviceone.yaml 文件:

runtime: nodejs14
service: myserviceone

创建包含内容的 myservicetwo.yaml 文件:

runtime: nodejs14
service: myservicetwo

使用命令部署

gcloud app deploy --project your_project_id app.yaml myserviceone.yaml myservicetwo.yaml

这将部署默认服务以及我的服务一和我的服务二。查看您的云控制台。

您可以使用以下方式访问它们:

https://myserviceone-dot-yourProjectID.appspot.com/http://myserviceone.yourProjectID.appspot.com/

https://myservicetwo-dot-yourProjectID.appspot.com/http://myservicetwo.yourProjectID.appspot.com/

【讨论】:

  • 感谢分享,这对我很有帮助。
  • google 不允许在同一个 app.yaml 文件中指定多个服务(逗号分隔或其他分隔符)以将代码部署到多个服务的任何具体原因?
  • composer.json 和 vendor 呢?是否应该有一个所有服务通用的供应商存储库,位于顶层?
【解决方案2】:

今天,App Engine 与 Google Cloud Console 项目一一对应。您不能在同一个项目中部署多个“应用程序”。但是,根据您的应用程序,您可能仍然可以做您想做的事情。

App Engine 具有“服务”的概念,它们是应用程序的独立方面。您的 App Engine 应用可以有许多服务,每个服务可以有自己的语言/运行时,甚至可以在不同的 App Engine 环境中。

您可以说 App Engine 标准环境中的 Python 服务用于为您的简单 Flask 站点提供服务,可以在标准环境中提供使用 Java 8 编写的 API 的服务,并且可以在 Node 中提供另一个服务.js 在 App Engine 柔性环境中运行。

您的“默认”服务在您的app.yaml 文件中定义。您的其他服务可以在不同的文件夹中定义,并且可以使用 app.yaml 及其服务定义,或者您可以将它们命名为 backend.yaml 之类的其他名称。配置文件布局见this simple Python project

有关 App Engine 服务的更多概念信息,see Microservices Architecture on Google App Engine

【讨论】:

    最近更新 更多