【发布时间】:2020-12-19 18:19:11
【问题描述】:
我有一个 Java 11 GCP App Engine 项目,我正在尝试根据环境使用不同的 app.yaml 文件(例如,app-dev.yaml、app-prod.yaml 等)。 /appengine目录下的yaml文件如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]
是否有推荐的方法来完成这项工作,或者这完全是错误的方法?
【问题讨论】:
-
您是否能够在没有复杂的 app-ENV.yaml 文件逻辑的情况下部署您的应用程序?
标签: google-app-engine google-cloud-platform yaml gcloud