我尝试使用dockerfile构建Maven项目,但是使用docker build命令时出现此错误

/bin/sh: 1: ./mvnw: not found

我试过这个解决方案:
Unable to run './mvnw clean install' when building docker image based on "openjdk:8-jdk-alpine" for Spring Boot app

但仍然有错误。

这是我的dockerfile
# Stage 1 Build the Spring Project into a jar file
FROM openjdk:8-slim as builder
RUN mkdir src
COPY . /src
WORKDIR /src
RUN chmod 700 mvnw && ./mvnw clean install package  ==>error on this line

# Stage 2 Run the jar file from previous build
FROM openjdk:8-jdk-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
COPY --from=builder /src/target /build
WORKDIR /build
EXPOSE 80
EXPOSE 5001
ENTRYPOINT ["java", "-jar", "tax-0.0.1-SNAPSHOT.jar"]

我想念什么吗?
我很乐意提供任何帮助。

最佳答案

这已经几个月了,但也许我可以帮上忙。
从Windows 10计算机基于openjdk:14-alpine构建镜像时,我遇到了相同的问题。问题在于本地mvnw脚本具有Windows行尾(称为CRLF的\r\n)。
我尝试使用/bin/sh mvnw调用脚本,但仍然会遇到问题。第一个解决方案是从我的IDE将行尾转换为Linux EOL(称为“LF”的\n)。
更好的方法是在调用脚本之前安装dos2unix并运行dos2unix mvnw。在Linux Slim(Debian)上,您可以执行apt-get update && apt-get install dos2unix
您也可以尝试使用chmod +x mvnw使脚本可执行。
希望这可以帮助!

10-08 11:28