当前位置: 首页 > 知识库问答 >
问题:

无法为JavaGCP App Engine项目提供自定义app.yaml文件

杜苏燕
2023-03-14

我有一个Java 11 GCP应用程序引擎项目,我正在尝试使用不同的应用程序。yaml文件取决于环境(例如,app-dev.yamlapp-prod.yaml等)。yaml文件位于/appengine目录中,如src/main/appengine/app-dev.yaml等。

已经有一篇关于这一点的帖子了,但是答案不起作用,因为它破坏了描述符,在Java中应该是pom。xml(有关更多信息,请参阅我的方法2)。

方法#1

更新:解决了!要使用这种方法,您必须使用gcloud 298.0.0

首先,我尝试使用中的--appyaml=appyaml参数https://cloud.google.com/sdk/gcloud/reference/app/deploy#--appyaml:

gcloud app deploy [DEPLOYABLES …] [--appyaml=APPYAML] [--bucket=BUCKET] ...

我运行了下面的程序,收到一个错误,appyaml参数无法识别。

$ gcloud --project=my-project app deploy --appyaml=app-dev.yaml
ERROR: (gcloud.app.deploy) unrecognized arguments: --appyaml=app-dev.yaml 

app-dev.yaml的完全限定路径也不起作用。

方法#2

接下来,我发现了一个略微不同的语法https://cloud.google.com/appengine/docs/flexible/java/configuring-your-app-with-app-yaml看起来是这样的:

gcloud app deploy service-name-app.yaml

我在本地尝试了同样的html" target="_blank">方法,但指向我的自定义app-dev.yaml,就像这样,但它会中断:

$ gcloud --project=my-project app deploy src/main/appengine/app-dev.yaml
...
descriptor:      [/Users/SomeDev/IdeaProjects/my-project/app-server/src/main/appengine/app-dev.yaml]
source:          [/Users/SomeDev/IdeaProjects/my-project/app-server/src/main/appengine]
target project:  [my-project]
target service:  [default]
target version:  [20200831abcdefg]
target url:      [https://my-project.uc.r.appspot.com]

这是因为它认为app-dev.yaml描述符文件,而不是pom。xml,因此它会出现以下错误:

Error message: did not find any jar files with a Main-Class manifest entry

相比之下,我在没有自定义yaml文件的情况下运行了一个正常部署,您可以看到pom。xml描述符的值。

$ gcloud --project=my-project app deploy
...
descriptor:      [/Users/SomeDev/IdeaProjects/my-project/app-server/pom.xml]
source:          [/Users/SomeDev/IdeaProjects/my-project/app-server]
target project:  [my-project]
target service:  [default]
target version:  [20200831abcdefg]
target url:      [https://my-project.uc.r.appspot.com]

有没有一种推荐的方法来实现这一点,或者这是一种完全错误的方法?


共有1个答案

钱和安
2023-03-14

看看你的“方法#1”,你必须将你的gcloud升级到新版本

看看你的“方法2”。如果您正在运行gcloud app deploy(不带参数),它将搜索描述符app。yaml位于当前目录中,如果未找到,则为pom。xml。如果你想使用pom。xml从不同的本地化中,您必须将其从当前目录中删除。我没有测试到最后,只是简单地测试了描述符值。

无论如何,我不认为使用上面的方法是最好的。使用pom时。xml作为描述符,这意味着您正在使用名为“将Maven项目部署为源代码”的功能。这不是使用maven部署应用程序引擎的主要方式。

根据我的理解,如果maven用于构建,则可以在app.yaml文件(参考)的entrypoint中使用jar或maven目标appEngine:部署(参考文章应该很有趣)。

 类似资料:
  • 自定义脚本 Gradle构建脚本的标准名称是build.gradle,在一个多项目构建的环境中,你想自定义你的构建脚本名称来显得高大上一点,因为多个项目有相同的构建脚本名称可能会混淆,接下来介绍如何使用自定义的脚本名称。 还是之前那个例子,假设所有的子项目路径都是以todo-开头,比如web子项目就是在todo-web目录下,构建脚本名称应该清晰的表示它的作用,如下图所示: 要使这个结构起作用关键

  • 我无法在swagger ui中显示我的spring文档。这是我的配置: 我输入这个URL来访问接口:http://localhost:8080/swagger-ui.html 问题是它没有显示从以下位置加载的api-docs: "http://localhost:8080/v3/api-文档/招摇配置“ 状态:200。 但是如果我在url字段中输入这个,它会工作。。我的目标不是每次都进入这个。。

  • 在上一节,我们创建了一个新的名为 gitrepo 的自定义资源类型并告诉 Puppet 此类型需要携带两个参数,分别为 source 和 path。 然而到目前为止,我们还没有告诉 Puppet 如何检出仓库,即如何创建这种类型的具体实例。 这正是提供者(provider)的用武之地。 正如我们之前看到的,一个类型经常会有几种可能的提供者。在本例中, 对一个 Git 仓库进行实例化仅有一种明智的方

  • 我试图添加一个Custom.targets文件到我的Xamarin Android项目,它在每次构建之前将一些文件从一个文件夹复制到另一个文件夹。 这在调试版本中运行良好,但是在发布版本中,由于ProGuard不喜欢Custom.targets文件,这很不正常。 /库/框架/单声道。framework/External/xbuild/Xamarin/Android/Xamarin。Android常

  • 我正在为我的laravel项目测试使用自定义域名配置作为测试。地方的当我作为测试运行这个项目时。谷歌chrome的本地页面显示了laravel的主页。但是,当我转到任何其他路由时,它会显示内部服务器错误。有人能找到解决办法吗?

  • 我正在尝试创建一个自定义的KeyClope提供程序,它将为登录逻辑添加一些内容。我已经读过如何为KeyClope创建提供者(或插件),我正在与之合作的项目中已经有一个提供者(或插件),但我对它们知之甚少。 我需要为用户身份验证/授权添加自定义逻辑:我希望能够检查内部数据库中的一些字段来验证人员帐户。但是我没有找到任何关于类似情况的指南或好文章。有人能给我提供一些关于从什么开始的链接吗?为了实现这样