Java-11 spring-boot deployment to google cloud error: app does not satisfy requirements for [java11]

Java-11 spring-boot deployment to google cloud error: app does not satisfy requirements for [java11]

我正在开展一个小组项目,我们希望在该项目中将后端部署到 Google 云。后端使用 Java11、Gradle 和 Spring-Boot 创建,并使用 Travis 通过 GitHub 部署到 Google Cloud。

后端在 ./gradlew bootrun 的本地主机上正常运行,但是当尝试将其部署到 Google 云时,我们收到以下错误:

ERROR: (gcloud.app.deploy) Your application does not satisfy all of the requirements for a runtime of type [java11]. Please correct the errors and try again.

我们通过以下过程重新创建了此错误,从等式中删除了 GitHub 和 Travis:

使用以下设置在 https://start.spring.io/ 创建了一个新的 Spring-Boot 项目:

创建后,我们添加了文件 app.yamlclient_secret.json

client_secret.json 文件包含有关 gcloud 上具有大量权限的测试客户端的信息。

app.yaml:

runtime: java11
env: flex

service: default

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

app.yamlclient_secret.json都存储在同一个地方build.gradlesettings.gradle

然后,从终端(我们使用 VScode 中的那个),我们 运行 gcloud app deploy。此命令首先询问我们是否要将后端部署到指定的 google 云项目,列出它找到 app.yaml 文件、源和目标。然后,当我们按Y继续时,出现错误。

这是 build.gradle 文件,可能有用(?):

plugins {
    id 'org.springframework.boot' version '2.1.9.RELEASE'
    id 'io.spring.dependency-management' version '1.0.8.RELEASE'
    id 'java'
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

ext {
    set('springCloudVersion', "Greenwich.SR3")
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-security'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.cloud:spring-cloud-gcp-starter'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testImplementation 'org.springframework.security:spring-security-test'
}

dependencyManagement {
    imports {
        mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
    }
}

所以我们的问题是;错误是什么意思?我们如何解决它?我们尝试了很多方法,例如同时编辑 app.yamlbuild.gradle,但似乎没有任何效果。我们也很难理解错误发生的位置,因为后端在本地主机上运行良好。

我们感谢每一个回复!

问候 HaavardG:D

似乎从 app.yaml 中删除 env: flex 成功了,因为 Java11 不支持 env: flex

我相信...

App Engine Standard 和 Flexible(两者)都支持 Java11。The difference between App Engine Standard and Flexible 是 Standard 有特定版本的 Java,而 Flexible 支持任何版本的 Java。

上面给出的错误是由于您输入了 app.yaml、runtime:java11。 它必须如下所示:

app.yaml

runtime: custom
env: flex

service: default

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

您必须先创建自定义运行时才能正确部署它。 Here您可以查看在 App Engine 柔性环境中创建自定义运行时的官方文档。