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

GitHub Actions无法构建Spring Boot应用Docker镜像求助

问题分析

错误提示找不到target/htmx-demo-0.0.1-SNAPSHOT.jar,核心原因是:本地构建时你会先执行Maven/Gradle打包命令生成target目录,但GitHub Actions的运行环境是全新的,仅拉取了代码仓库内容,没有执行构建步骤生成jar包,导致Docker构建时找不到目标文件。

解决方案

在GitHub Actions工作流中添加Java构建步骤,先生成jar包再执行Docker构建:

针对Maven项目

  1. 引入actions/setup-java配置JDK环境
  2. 执行mvn clean package -DskipTests命令打包(跳过测试可加快构建速度)

针对Gradle项目

  1. 同样引入actions/setup-java配置JDK环境
  2. 执行./gradlew clean build -x test命令打包(-x test参数跳过测试)
优化建议

Dockerfile中硬编码了jar包版本号,后续版本迭代时需修改Dockerfile,建议用通配符简化:

COPY target/*.jar $APP_HOME/htmx-demo.jar

这样不管target目录下生成的jar包版本号是什么,都会被复制并重命名为htmx-demo.jar,无需修改Dockerfile。

完整工作流示例

Maven项目版

name: Docker Image CI
on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Set up JDK 23
      uses: actions/setup-java@v4
      with:
        java-version: '23'
        distribution: 'temurin'
        cache: maven # 缓存Maven依赖,加速后续构建
    - name: Package Spring Boot app with Maven
      run: mvn clean package -DskipTests
    - name: Build Docker image
      run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)

Gradle项目版

name: Docker Image CI
on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Set up JDK 23
      uses: actions/setup-java@v4
      with:
        java-version: '23'
        distribution: 'temurin'
        cache: gradle # 缓存Gradle依赖,加速后续构建
    - name: Package Spring Boot app with Gradle
      run: ./gradlew clean build -x test
    - name: Build Docker image
      run: docker build . --file Dockerfile --tag my-image-name:$(date +%s)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 17:10:18