You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Google Kubernetes Engine上部署需JDK环境的Spring Boot应用

在Google Kubernetes Engine(GKE)部署依赖JDK环境的Optaplanner Spring Boot应用方案

核心思路

默认Java容器镜像大多仅预装JRE,不支持Optaplanner运行时动态编译Java类的需求,只要将应用容器的基础镜像替换为完整JDK版本,再按常规流程部署到GKE即可。

具体操作步骤

  • 调整容器镜像的基础镜像配置
    编辑应用的Dockerfile,将原有的JRE基础镜像替换为对应版本的JDK基础镜像即可,示例如下:
    原JRE版本Dockerfile(不满足需求):
    FROM eclipse-temurin:17-jre-jammy
    ARG JAR_FILE=target/*.jar
    COPY ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]
    
    修改后的JDK版本Dockerfile:
    # 替换为同版本的完整JDK基础镜像,可根据自身项目的Java版本选择对应JDK镜像
    FROM eclipse-temurin:17-jdk-jammy
    ARG JAR_FILE=target/*.jar
    COPY ${JAR_FILE} app.jar
    ENTRYPOINT ["java","-jar","/app.jar"]
    
    注意选择的JDK版本需要和你项目编译时使用的Java版本一致,避免出现兼容性问题
  • 本地验证镜像功能
    本地构建镜像后启动测试,确认Optaplanner的动态编译逻辑可以正常运行,避免部署到GKE后才出现环境异常。
  • 推送镜像到GKE可用的镜像仓库
    将验证通过的镜像打标签后推送到Google Container Registry(GCR)或Artifact Registry,命令示例:
    # 给本地镜像打仓库标签
    docker tag 本地镜像名 gcr.io/你的GCP项目ID/自定义镜像名:版本号
    # 推送镜像到GCR
    docker push gcr.io/你的GCP项目ID/自定义镜像名:版本号
    
  • 编写GKE部署配置
    编写Deployment的YAML配置文件,将镜像字段指定为上一步推送的JDK版应用镜像,示例配置:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: optaplanner-springboot-app
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: optaplanner-app
      template:
        metadata:
          labels:
            app: optaplanner-app
        spec:
          containers:
          - name: app
            image: gcr.io/你的GCP项目ID/自定义镜像名:版本号
            ports:
            - containerPort: 8080
    
  • 部署到GKE集群
    连接到目标GKE集群后执行部署命令即可:
    kubectl apply -f 部署配置文件名.yaml
    

可选优化

如果希望缩小JDK镜像的体积,可以使用jlink工具裁剪自定义JDK运行时,仅保留项目所需的JDK模块,在保证动态编译能力可用的前提下降低镜像体积。

内容的提问来源于stack exchange,提问作者Mahouk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 15:06:07