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

Github Actions构建推送Docker镜像至DockerHub失败:target目录不存在

问题解决:Docker构建时找不到target目录

错误原因

你的GitHub Actions工作流跳过了Spring Boot项目构建步骤,直接执行Docker build。在全新的GitHub Actions运行环境中,克隆下来的代码没有target目录(该目录是执行Maven构建后才会生成的),因此Docker复制jar包时会报错找不到对应路径。

解决方案:在Actions中添加项目构建步骤

修改你的GitHub Actions配置,在checkout之后、Docker Build之前,补充Java环境配置和Maven构建命令:

name: Build & Deploy

on:
  push:
    branches: [ master ]
  workflow_dispatch:

jobs:
  build_and_push:
    name: Build & Push to DockerHub
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      
      # 新增:配置JDK 17环境
      - name: Set up JDK 17
        uses: actions/setup-java@v3
        with:
          java-version: '17'
          distribution: 'temurin'
          cache: maven # 缓存Maven依赖,加速后续构建
          
      # 新增:执行Maven构建,生成target目录与jar包
      - name: Build Spring Boot project with Maven
        run: mvn clean package -DskipTests # 跳过测试可加快构建,需要测试可移除-DskipTests参数
      
      - name: Login to DockerHub
        uses: docker/login-action@v2
        with:
          username: ${{ secrets.DOCKERHUB_USERNAME }}
          password: ${{ secrets.DOCKERHUB_PASSWORD }}

      - name: Docker Build and Push to DockerHub
        uses: docker/build-push-action@v3
        with:
          context: .
          push: true
          tags: markoblazhevski/kiii:latest

额外优化建议(可选)

为减小Docker镜像体积,可改用多阶段构建的Dockerfile,避免将构建环境的JDK与依赖打包到最终镜像中:

# 第一阶段:构建项目
FROM maven:3.8.6-openjdk-17 AS builder
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests

# 第二阶段:生成轻量运行镜像
FROM openjdk:17-jdk-slim
WORKDIR /app
COPY --from=builder /app/target/KIII_Project_Final-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

使用多阶段构建后,你甚至可以在GitHub Actions中去掉Maven构建步骤,直接让Docker在构建过程中完成项目编译,但对于新手来说,优先采用前面的基础方案解决问题更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 23:55:30