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

Docker构建Java应用报错:Maven命令未找到(exit code:127)

Maven构建Docker镜像失败:找不到mvn命令的解决方法

问题场景

尝试用Maven为Java应用构建Docker镜像,Dockerfile内容如下:

# Build stage
FROM eclipse-temurin:21 AS build
WORKDIR /app
COPY pom.xml .
COPY src ./src
#mvn clean package -DskipTests

# Runtime stage
FROM eclipse-temurin:21
WORKDIR /app
COPY --from=build /app/target/uprightcleaningservices-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

执行镜像构建时触发错误:

ERROR: failed to solve: process "/bin/sh -c mvn clean package -DskipTests" did not complete successfully: exit code: 127

相关背景:

  • 本地执行mvn clean package -DskipTests可正常完成项目构建,target目录路径正确
  • 构建、运行阶段均采用eclipse-temurin:21作为基础镜像
  • 错误根源为构建容器内未安装Maven,无法识别mvn命令

解决方法

方法1:使用自带Maven的基础镜像(推荐)

将构建阶段的eclipse-temurin:21替换为集成了Maven和对应JDK的官方镜像,比如maven:3.9-eclipse-temurin-21,修改后的Dockerfile如下:

# Build stage
FROM maven:3.9-eclipse-temurin-21 AS build
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests

# Runtime stage
FROM eclipse-temurin:21
WORKDIR /app
COPY --from=build /app/target/uprightcleaningservices-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

注意:选择maven镜像时需保证其JDK版本与运行阶段一致,避免出现兼容性问题

方法2:在构建阶段手动安装Maven

若坚持使用eclipse-temurin:21作为构建基础镜像,可在构建阶段添加Maven安装步骤:

# Build stage
FROM eclipse-temurin:21 AS build
WORKDIR /app
# 安装Maven及依赖
RUN apt-get update && apt-get install -y maven
COPY pom.xml .
COPY src ./src
RUN mvn clean package -DskipTests

# Runtime stage
FROM eclipse-temurin:21
WORKDIR /app
COPY --from=build /app/target/uprightcleaningservices-0.0.1-SNAPSHOT.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "app.jar"]

此方式会增加镜像构建时间,仅在无法使用maven官方镜像时采用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 08:13:12