如何从 Google App Engine 中的单个 app.yaml 文件部署 Java 应用程序的多个版本
Posted
技术标签:
【中文标题】如何从 Google App Engine 中的单个 app.yaml 文件部署 Java 应用程序的多个版本【英文标题】:How to deploy multiple versions of an java application from a single app.yaml file in Google App Engine 【发布时间】:2020-04-09 14:11:49 【问题描述】:我正在尝试在具有多个版本的应用引擎上部署 java spring 应用程序。我正在使用 docker images 来部署应用程序。我想创建一个 app.yaml 文件,我可以在其中定义我的两个版本的应用程序并从一个文件运行它们。
我无法理解如何在一个文件中为这两个版本编写 app.yaml。目前我的 yaml 文件如下所示:
runtime: java
api_version: '1.0'
env: flexible
threadsafe: true
现在如何在同一个 yaml 中添加第二个版本的详细信息并同时部署。
【问题讨论】:
【参考方案1】:我认为不可能同时部署一个 gcloud 应用并从同一个 app.yaml 部署 2 个版本。
我认为您可以解决您需要的问题是尝试使用具有您的版本名称的不同 $ENV_VARIABLES 进行 2 gcloud deploy。所有这些都在 docker 映像中,因此您可以将其自动化。之后,您还可以在它们之间拆分流量 2 并实现我认为您正在寻找的目标。
在你的 docker 镜像中会是这样的:
RUN gcloud app deploy -v $ENV_VAR && gcloud app deploy -v $ENV_VAR2 --no-promote
RUN gcloud app services set-traffic [SERVICE] --splits:$ENV_VAR1:.5, $ENV_VAR2:.5
更多信息如何在版本之间set-traffic。
希望这会有所帮助。
【讨论】:
谢谢@stefan。我使用单独的 yaml 做了同样的事情。以上是关于如何从 Google App Engine 中的单个 app.yaml 文件部署 Java 应用程序的多个版本的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Google App Engine 推送 Android 应用程序中的事件流
如何在 Google Cloud App Engine 上使用 PubSub 创建订阅者,该订阅者通过 Publisher 从 Google Cloud App Engine Flex 收听消息?
如何从本地 Google App-engine 数据存储中删除所有实体?
Google App Engine 静态文件服务与应用程序冲突