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
相关产品推荐
相关产品推荐

