从“openjdk:8-jdk-alpine”为 Spring Boot 应用程序构建 docker 映像时无法运行“RUN ./mvnw dependency:go-offline -B”
Posted
技术标签:
【中文标题】从“openjdk:8-jdk-alpine”为 Spring Boot 应用程序构建 docker 映像时无法运行“RUN ./mvnw dependency:go-offline -B”【英文标题】:Unable to run 'RUN ./mvnw dependency:go-offline -B' when building docker image from "openjdk:8-jdk-alpine" for Spring Boot app 【发布时间】:2020-07-11 21:31:54 【问题描述】:所以我试图在 docker 容器内运行一个带有 maven 包装器的 spring boot 应用程序。这是我的 Docker 文件:
### Stage 1: Build the application
FROM openjdk:8-jdk-alpine as build
RUN mkdir -p /app
#Set the current working directory inside the image
WORKDIR /app
#copy maven executable to the image
COPY mvnw .
COPY .mvn .mvn
#Copy the pom.xml file
COPY pom.xml .
#Build all the dependencies in preparation to go offline
#This is a separate step so the dependencies will be cached unless
#the pom.xml file has changed
RUN ./mvnw dependency:go-offline -B
#Copy the project source
COPY src src
#Package the application
RUN ./mvnw package -DskipTests
RUN mkdir -p target/dependency && (cd target/dependency; jar -xf ../*.jar)
我有这个错误:
Step 7/16 : RUN ./mvnw dependency:go-offline -B
---> Running in 642a32f86392
/bin/sh: ./mvnw: not found
ERROR: Service 'app-server' failed to build: The command '/bin/sh -c ./mvnw dependency:go-offline -B' returned a non-zero code: 127
我正在使用 Windows 10 专业版。请问我需要你的帮助
【问题讨论】:
【参考方案1】:可能与Unable to run './mvnw clean install' when building docker image based on "openjdk:8-jdk-alpine" for Spring Boot app 重复
你能检查mvnw
shell 脚本的行尾吗?
您可以通过在执行mvnw
命令之前添加它来修复它:
RUN dos2unix mvnw
或者,如果文件在 git 中,您也可以通过将以下内容添加到 .gitattributes
文件并再次检出文件来修复它:
*.bat text eol=crlf
mvnw text eol=lf
【讨论】:
【参考方案2】:您必须先将项目文件复制到/app
目录中。而且您在运行 docker build
的上下文文件夹中没有 maven 包装器。
【讨论】:
以上是关于从“openjdk:8-jdk-alpine”为 Spring Boot 应用程序构建 docker 映像时无法运行“RUN ./mvnw dependency:go-offline -B”的主要内容,如果未能解决你的问题,请参考以下文章
Docker openjdk-8-jdk-alpine 容器时间与jdk时区不同修改方法
Docker:java:openjdk-8-jdk-alpine 图像缺少 javac 和 tools.jar