我尝试根据以下docker文件在docker容器中构建一个spring boot项目,但是每次都从互联网下载所有mvn依赖项。 构建docker文件时如何绑定本地.m2文件。
这是我的 Dockerfile
FROM maven:3.5-jdk-8-alpine AS build
COPY /src /usr/src/javaspring/src
COPY pom.xml /usr/src/javaspring
COPY Dockerfile /usr/src/javaspring
RUN mvn -f /usr/src/javaspring/pom.xml clean install
FROM openjdk:8-jre-alpine
COPY --from=build /usr/src/javaspring/target/javaspring-1.0.jar app.jar
ENTRYPOINT [“java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
答案 0 :(得分:2)
您应该将项目的内容装入docker映像中,并将$HOME/.m2/
装入映像中,而不是将所有内容都复制到映像中并构建新映像。
$PWD
是pom.xml
文件所在的本地目录,并且src
目录存在...
docker run -it --rm \
-v "$PWD":/usr/src/mymaven \ (1)
-v "$HOME/.m2":/root/.m2 \ (2)
-v "$PWD/target:/usr/src/mymaven/target" \ (3)
-w /usr/src/mymaven \ (4)
maven:3.5-jdk-8-alpine \ (5)
mvn clean package
pom.xml
所在的工作目录的位置。 因此,您无需创建新图像即可使用Maven构建自己的东西。只需通过以下命令运行现有映像:
docker run -it --rm \
-v "$PWD":/usr/src/mymaven \
-v "$HOME/.m2":/root/.m2 \
-v "$PWD/target:/usr/src/mymaven/target" \
-w /usr/src/mymaven \
maven:3.5-jdk-8-alpine mvn clean package