在构建阶段将.m2文件绑定到docker

时间:2018-08-25 09:39:31

标签: maven docker spring-boot dockerfile

我尝试根据以下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"]

1 个答案:

答案 0 :(得分:2)

您应该将项目的内容装入docker映像中,并将$HOME/.m2/装入映像中,而不是将所有内容都复制到映像中并构建新映像。

$PWDpom.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
  1. 定义pom.xml所在的工作目录的位置。
  2. 定义本地缓存的位置。
  3. 定义目标目录以将其映射到给定路径下的图像中
  4. 定义工作目录。
  5. 定义要使用的图像的名称。

因此,您无需创建新图像即可使用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