求Spring Boot+Gradle+Jib+Cloud Run+Cloud Build部署示例及文档
Spring Boot + Gradle + Jib + Cloud Build 部署参考示例
核心配置示例
1. Gradle 配置(build.gradle.kts)
引入Jib插件并配置Spring Boot相关参数,明确指定主类:
plugins { id("org.springframework.boot") version "3.2.0" id("io.spring.dependency-management") version "1.1.4" id("com.google.cloud.tools.jib") version "3.4.0" kotlin("jvm") version "1.9.20" kotlin("plugin.spring") version "1.9.20" } group = "com.example" version = "0.0.1-SNAPSHOT" java { sourceCompatibility = JavaVersion.VERSION_17 } repositories { mavenCentral() } dependencies { implementation("org.springframework.boot:spring-boot-starter-web") implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlin:kotlin-reflect") testImplementation("org.springframework.boot:spring-boot-starter-test") } tasks.withType<Test> { useJUnitPlatform() } jib { from { image = "eclipse-temurin:17-jre-alpine" } to { image = "us-central1-docker.pkg.dev/[PROJECT-ID]/[REPOSITORY]/[IMAGE-NAME]" tags = setOf("latest") } container { mainClass = "com.example.demo.DemoApplication" // 替换为你的主类全路径 ports = listOf("8080") environment = mapOf("SPRING_PROFILES_ACTIVE" to "prod") } }
2. cloudbuild.yaml 配置
steps: # 构建并推送镜像到Artifact Registry - name: 'gradle:8.5-jdk17' entrypoint: './gradlew' args: ['jib', '--image=us-central1-docker.pkg.dev/[PROJECT-ID]/[REPOSITORY]/[IMAGE-NAME]:latest'] env: - 'GOOGLE_CLOUD_PROJECT=[PROJECT-ID]' # 部署镜像到Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: 'gcloud' args: - 'run' - 'deploy' - '[SERVICE-NAME]' - '--image=us-central1-docker.pkg.dev/[PROJECT-ID]/[REPOSITORY]/[IMAGE-NAME]:latest' - '--region=us-central1' - '--platform=managed' - '--allow-unauthenticated' # 按需设置是否允许未认证访问
关键说明
- Gradle的Jib配置中
mainClass必须指定正确的主类全路径,这是避免"Could not find or load main class"错误的核心配置项 - 确保Cloud Build服务账号拥有Artifact Registry的推送权限和Cloud Run的部署权限
- 将配置中的
[PROJECT-ID]、[REPOSITORY]、[IMAGE-NAME]、[SERVICE-NAME]替换为你的实际资源名称
内容的提问来源于stack exchange,提问作者user8787347
相关产品推荐
相关产品推荐

