我试图了解Google App Engine的dispatch.yaml
文件。
我们有一个普通的web应用程序,有前端和后端。我们还有一个开发和生产环境。这两种环境在GAE上都有两种服务——前端
和默认
,后者是后端。
我们有一个普通的web应用程序,有前端和后端。我们还有一个开发和生产环境。我们在GAE上有两个服务——前端和默认,后者是后端。我们有两个关于GAE-staging
(这是我们的开发环境)和production
(这是我们的生产环境)的项目。登台环境是从前端和后端的开发分支构建的。生产环境是从前端和后端的主环境构建的。
我们希望为登台和生产环境使用自定义路由。
我试过使用dispatch\u staging。yaml
和分派_prod.yaml
来区分文件,但GAE不会识别这些文件名。我想我们可以重新命名前端服务,但似乎无法绕过default
。
您如何使用dispatch.yaml
来指定正在构建的环境?
我也遇到了与您相同的问题,我来为您提供第三个解决方案。如果您有几个开发环境,您可能会有一个自动部署(就我而言,使用Gitlab-CI)。在我的部署实习期间,我如下所示,我复制(或重命名)调度文件:
/gcp。派遣测试。yml
=下面是mygitlab ci中的一个阶段示例。yml
文件(用于测试):
testing__deploy__gcp_dispatch:
stage: dispatch
image: google/cloud-sdk:alpine
script:
- cd ${CI_PROJECT_DIR}
- gcloud auth activate-service-account --key-file ${GCP_SERVICE_KEY_FILE}
- cp ./gcp.dispatch.testing.yml ./dispatch.yml
- gcloud --quiet --project ${GCP_PROJECT_ID} app deploy ./dispatch.yml
你去那里!
PS:我明白了,之后,AppInfoExternal类型的对象出现了错误意外属性'dispatch'
来自
gcloud
不接受文件的名称与dispatch不同。yml
。。。
我解决这个问题的方法是为应用程序代码使用不同的回购分支。
master
分支版本被部署到my_app-dev
——开发环境app这样文件总是被命名为dispatch.yaml
。服务名称不会在环境之间发生变化,但与它们关联的自定义域名会发生变化-这反映在2个分支中的dispatch.yaml
文件的内容中:
$ git diff production master -- dispatch.yaml
diff --git a/dispatch.yaml b/dispatch.yaml
index 0768a6a..c1326cf 100644
--- a/dispatch.yaml
+++ b/dispatch.yaml
@@ -1,14 +1,14 @@
-application: my_app
+application: my_app-dev
dispatch:
- - url: "service1.my_app.com/*"
+ - url: "service1-dev.my_app.com/*"
module: service1
- - url: "service1-dot-my_app.appspot.com/*"
+ - url: "service1-dot-my_app-dev.appspot.com/*"
module: service1
- url: "*/service1/*"
module: service1
- - url: "service2.my_app.com/*"
+ - url: "service2-dev.my_app.com/*"
module: service2
- - url: "service2-dot-my_app.appspot.com/*"
+ - url: "service2-dot-my_app-dev.appspot.com/*"
module: service2
注意:我正在应用程序级别实现不同的环境(与服务级别相反,请参阅在GAE项目/应用程序级别与服务/模块级别实现CI/CD环境的优势?)。服务级实现不能使用这种方法。
我知道这是一个老问题,但我刚刚发现了一些有趣的东西,它将帮助每个想要部署到不同环境的人。经过大量的尝试和错误,我弄清楚了gcloud
需要将作为参数给出的调度文件称为dispatch.yaml
。如果您将其称为其他任何东西,例如dispatch-staging.yaml
或dev-dispatch.yaml
它将无法工作。然而,并且这是我发现的技巧,文件不必在您项目的根文件夹中。所以,在我们的项目中我这样做了:
现在我可以做
CD了
gcloud——项目
换句话说,
gcloud
不关心在哪个目录下发送。yaml
文件只要被称为dispatch,就会被定位。yaml
。
问题内容: 我使用martini在Go中有一个GAE应用程序。我需要能够设置环境变量以告诉martini它应该使用生产设置进行初始化。根据Python文档,您可以在app.yaml中设置环境变量。我没有在Go docs中 看到任何有关此的内容,但我猜想它应该可以正常工作。 我需要能够将环境变量设置为,但是我只想在实际投入生产时(即)进行操作。有什么方法可以告诉您仅在非开发服务器上运行吗? 问题答案
我正在使用多线程执行插入操作。我使用了带注释的方法,我的方法是注释。但我无法执行插入操作,导致出现以下异常。 异常线程"Thread-21"javax.persistence.Transaction必需异常:在org.hibernate.ejb.AbstractQueryImpl.executeUpdate(AbstractQueryImpl.java:96)在sun.reflect.Native
如何统一开发环境? 在日常的团队开发中,由于开发环境的不一致,往往会导致出现各种各样的问题。即便是经验丰富的工程师,在遇到这种问题时也会特别头疼。为了解决这种问题,Vagrant 顺势而生!Vagrant 是一个用于创建和部署虚拟化开发环境的工具,其依赖于 VirtualBox 虚拟机,致力于帮助开发者快速构建一个环境统一的虚拟系统。Vagrant 最强大的地方是在于它在构建虚拟系统时的快捷简便,
简介 Xiaomi Cloud-ML也支持基于GPU的开发环境,用法与训练任务相同,可参考 使用GPU训练 。 开发环境的GPU数量大于0时,开启GPU加速。系统为开启GPU的开发环境分配GPU,并且镜像内安装相应软件包。 使用命令行启用GPU 用户在使用命令行创建开发环境时,可以使用参数指定需要的GPU个数。 cloudml dev create -n mydev -p mypassword -
我们有一个使用“多模式”策略的多租户SaaS应用程序,即每个客户在同一数据库实例中都有专用模式。我们使用MSSQLServer作为数据库,通过SQLServer“用户”的“默认模式”设置在模式之间切换。例如,客户A、B和C在SQL Server中的配置如下: 客户A:默认模式 客户B:默认模式 客户C:具有默认模式…等等。 在我们的应用程序中,我们通过在每次查询之前执行以下 SQL,在连接上设置
我有一个长期的项目,是使用与redis和一个问题,已经开始,我相信只有升级到sidkiq 3。 问题是,如果不先启动redis服务器,我就无法运行正在开发的rails(4.1.4)应用程序。我在启动rails服务器时遇到的错误与我在没有首先启动redis的情况下运行bundle exec sidekiq时遇到的错误相同。在没有运行redis的情况下运行我的rails应用程序以前从来都不是问题,即使