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

Dockerfile中无法执行mvnw命令问题已解决

Docker中使用OpenJDK 8镜像执行mvnw package报错的解决办法

问题与错误信息

我是Docker新手,尝试在OpenJDK 8镜像的容器中使用mvnw package命令构建jar包时,出现以下错误:

ERROR [3/3] RUN ./mvnw package                                                                                 0.5s
------
 > [3/3] RUN ./mvnw package:
#7 0.448 /bin/sh: 1: ./mvnw: not found
------
executor failed running [/bin/sh -c ./mvnw package]: exit code: 127

初始Dockerfile(OpenJDK 8镜像)

FROM openjdk:8

WORKDIR /usr/src/app

COPY . .

RUN ./mvnw package

CMD ["java", "-jar", "./target/springjava.jar"]

可正常运行的对比方案(Maven镜像)

使用maven:3.6.3-jdk-8镜像时,执行mvn clean package命令可正常构建,对应的Dockerfile如下:

FROM maven:3.6.3-jdk-8

WORKDIR /usr/src/app

COPY . .

RUN mvn clean package

CMD ["java", "-jar", "./target/springjava.jar"]

解决方案

问题出在Windows系统下生成的mvnw脚本是Windows换行格式(包含回车符\r),而Linux容器无法识别这种格式的脚本。需要在Dockerfile中添加步骤将脚本转换为Unix格式,移除回车符:

FROM openjdk:8

WORKDIR /usr/src/app

COPY . . 

RUN sed -i 's/\r//' mvnw

RUN ./mvnw package

CMD ["java", "-jar", "./target/springjava.jar"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:45:07