如何解决无法为Java GCP App Engine项目提供自定义app.yaml文件
我有一个Java 11 GCP App Engine项目,并且我尝试根据环境使用不同的app.yaml
文件(例如app-dev.yaml
,app-prod.yaml
等)。 yaml
目录中的/appengine
文件,例如src/main/appengine/app-dev.yaml
,依此类推。
有一个SO post about this already,但是答案不起作用,因为它掩盖了descriptor
,在Java中应该是pom.xml
(请参阅我的方法2 >了解更多信息。
方法1
更新:已解决!为了使用这种方法,您必须使用gcloud 298.0.0 +
首先,我尝试使用https://cloud.google.com/sdk/gcloud/reference/app/deploy#--appyaml中的--appyaml=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
我在本地尝试了相同的操作,但是像这样指向了我的自定义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
是descriptor
文件而不是pom.xml
,因此出现以下错误:
Error message: did not find any jar files with a Main-Class manifest entry
作为比较,我运行了一个没有自定义yaml
文件的常规部署,您可以看到pom.xml
是descriptor
的值。
$ 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”,您必须将gcloud升级到版本> = {298.0.0。-添加了appyaml参数-最近是在20年6月。
查看您的“方法2”。如果您正在运行gcloud app deploy
(不带参数),它将在当前目录中搜索描述符app.yaml
,如果找不到,则搜索pom.xml
。如果要从其他本地使用pom.xml
,则必须将其从当前目录中删除。我还没有测试到最后,只是在摘要中测试了描述符值。
无论如何,我不认为使用上面的方法是最好的方法。当您使用pom.xml
作为描述符时,意味着您正在使用称为“ deploy your Maven project as source code”的功能。这不是使用Maven部署App Engine的主要方法。
根据我的理解,如果使用maven进行构建,则有可能使用entrypoint
文件(reference的app.yaml
中的jar或maven目标appengine:deploy
({ {3}} + reference)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。