[英]Deploying a Spring boot application with mysql on google cloud with java11
[英]Java-11 spring-boot deployment to google cloud error: app does not satisfy requirements for [java11]
我正在开展一个小组项目,我们希望将后端部署到 Google Cloud。 后端使用 Java11、Gradle 和 Spring-Boot 创建,并通过 GitHub 和 Travis 部署到 Google Cloud。
后端使用./gradlew bootrun
在 localhost 上正常运行,但是在尝试将其部署到 Google Cloud 时,我们收到以下错误:
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.yaml
和client_secret.json
。
client_secret.json
文件包含有关 gcloud 上具有大量权限的测试客户端的信息。
app.yaml:
runtime: java11
env: flex
service: default
handlers:
- url: /.*
script: this field is required, but ignored
app.yaml
和client_secret.json
都存储在同一个地方build.gradle
和settings.gradle
是。
然后,从终端(我们在 VScode 中使用),我们运行gcloud app deploy
。 该命令首先询问我们是否要将后端部署到指定的谷歌云项目,列出它找到了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.yaml
和build.gradle
,但似乎没有任何效果。 我们也很难理解错误发生在哪里,因为后端在 localhost 上运行良好。
我们感谢每一个回应!
最好的问候 HaavardG:D
似乎从app.yaml
中删除env: flex
起到了作用,因为 Java11 不支持env: flex
。
我相信...
App Engine Standard 和 Flexible(两者)都支持 Java 11. App Engine Standard 和 Flexible 的区别在于Standard 具有特定版本的 Java 而 Flexible 支持任何版本的 ZD52387880E1EA22817A72D3759Z。
上面给出的错误是由于您正在输入 app.yaml, runtime:java11。 它必须如下所示:
app.yaml
runtime: custom
env: flex
service: default
handlers:
- url: /.*
script: this field is required, but ignored
您必须先创建自定义运行时才能正确部署它。 在这里,您可以查看在 App Engine 柔性环境中创建自定义运行时的官方文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.