【问题标题】:Google Cloud SDK: Unable to deploy due to missing entrypoint in app.yamlGoogle Cloud SDK:由于 app.yaml 中缺少入口点而无法部署
【发布时间】:2019-10-01 14:28:59
【问题描述】:

2020 年 6 月 30 日,Google 将关闭 Google App Engine SDK 和工具。我一直在将我的项目迁移到 Java 11 和 Google Cloud SDK。我正在处理的项目只是由 servlet 组成。我在部署过程中遇到问题,显示最终错误:

“GCLOUD:错误信息:无法生成应用命令:无法生成 生成应用程序启动命令:缺少入口点条目 app.yaml。”

在尝试部署时,使用:“mvn package appengine:deploy”会产生以下输出:

[INFO] --- maven-war-plugin:2.2:war (default-war) @ hellokb3 ---
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by com.thoughtworks.xstream.core.util.Fields (file:/C:/Users/Emperor/.m2/repository/com/thoughtworks/xstream/xstream/1.3.1/xstream-1.3.1.jar) to field java.util.Properties.defaults
WARNING: Please consider reporting this to the maintainers of com.thoughtworks.xstream.core.util.Fields
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release
[INFO] Packaging webapp
[INFO] Assembling webapp [hellokb3] in [C:\Users\Emperor\eclipse-workspace\hellokb3\target\hellokb3-0.1.0-SNAPSHOT]
[INFO] Processing war project
[INFO] Copying webapp resources [C:\Users\Emperor\eclipse-workspace\hellokb3\src\main\webapp]
[INFO] Webapp assembled in [11192 msecs]
[INFO] Building war: C:\Users\Emperor\eclipse-workspace\hellokb3\target\hellokb3-0.1.0-SNAPSHOT.war
[INFO] WEB-INF\web.xml already added, skipping
[INFO]
[INFO] --- appengine-maven-plugin:2.1.0:deploy (default-cli) @ hellokb3 ---
[INFO] Staging the application to: C:\Users\Emperor\eclipse-workspace\hellokb3\target\appengine-staging
[INFO] Detected App Engine app.yaml based application.
Oct 01, 2019 3:16:26 PM com.google.cloud.tools.appengine.operations.GcloudRunner run
INFO: submitting command: C:\Users\Emperor\AppData\Local\google\ct4j-cloud-sdk\LATEST\google-cloud-sdk\bin\gcloud.cmd app deploy --version 1 --project kbnetworld
[INFO] GCLOUD: Services to deploy:
[INFO] GCLOUD:
[INFO] GCLOUD: descriptor:      [C:\Users\Emperor\eclipse-workspace\hellokb3\target\appengine-staging\app.yaml]
[INFO] GCLOUD: source:          [C:\Users\Emperor\eclipse-workspace\hellokb3\target\appengine-staging]
[INFO] GCLOUD: target project:  [testworld]
[INFO] GCLOUD: target service:  [default]
[INFO] GCLOUD: target version:  [1]
[INFO] GCLOUD: target url:      [https://testworld.appspot.com]
[INFO] GCLOUD:
[INFO] GCLOUD:
[INFO] GCLOUD: Beginning deployment of service [default]...
[INFO] GCLOUD: #============================================================#
[INFO] GCLOUD: #= Uploading 2 files to Google Cloud Storage                =#
[INFO] GCLOUD: #============================================================#
[INFO] GCLOUD: File upload done.
[INFO] GCLOUD: Updating service [default]...
[INFO] GCLOUD: .........................................................................................................................................................failed.
[INFO] GCLOUD: ERROR: (gcloud.app.deploy) Error Response: [9] Cloud build da851139-6c89-4065-93c0-0940580b6af8 status: FAILURE.
[INFO] GCLOUD: Error ID: 80D70A67.
[INFO] GCLOUD: Error type: InternalError.
[INFO] GCLOUD: Error message: Failed to generate app command: failure to generate application start command: missing entrypoint entry in app.yaml.
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  01:09 min
[INFO] Finished at: 2019-10-01T15:17:16+01:00
[INFO] ------------------------------------------------------------------------

构建了一个 fat-jar,所以它编译得很好。我已经检查过了,可以看到所有依赖项都包含在内。

根据文档,可以使用 YAML 配置部署应用程序,运行时和任何 fatjars 都将被执行。但是,构建失败并说明必须添加 yaml 文件中的入口点,尽管这是文档中的可选字段。

runtime: java11

handlers:
  - url: /.*
    script: this field is required, but ignored

我已经在 web.xml 中配置了我的 servlet。

有没有人经历过类似的事情,并且可以指出部署失败的原因?提前致谢。

【问题讨论】:

  • 尝试添加一个显式入口点配置 - 也许您的应用不满足自动确定入口点的要求,无论出于何种原因。

标签: java google-app-engine


【解决方案1】:

我想说这个问题可能与这个public issue tracker comment 有关,因为有一些类似的点,并且通过部署一个 hello world 应用程序的近似值可能适合您。

检查 maven 插件是否需要删除 appengine-web.xml 文件并将其替换为位于 /src/main/appengine/ 的 app.yaml 文件

【讨论】:

    【解决方案2】:

    您可能希望将 Cloud SDK 升级到最新版本 265.0.0。具体来说,对于 App Engine,它增加了对以下方面的支持:

    • 直接部署 Java11 fatjar
    • 用于部署 Java11 fatjar 的依赖类路径条目的 jars

    app.yaml文件中跳过入口点定义需要遵守here中提到的要求:

    不需要具有正确清单类路径条目的单个 fatjar 的入口点。

    要升级到最新的 Cloud SDK 版本,只需运行:

    gcloud components update
    

    【讨论】:

      【解决方案3】:

      我也遇到了同样的问题,看了this的视频,把app.yaml改成:

      runtime: java11
      instance_class: F4
      entrypoint: java -noverify -jar clothfinder-0.0.1-SNAPSHOT.war
      

      我希望它也对你有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-12-19
        • 2019-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-03-01
        • 1970-01-01
        • 2012-11-11
        相关资源
        最近更新 更多