gpt4 book ai didi

maven - 在构建阶段将 .m2 文件绑定(bind)到 docker

转载 作者:行者123 更新时间:2023-12-02 21:14:32 25 4
gpt4 key购买 nike

我尝试基于以下 docker 文件在 docker 容器中构建一个 spring boot 项目。但每次都是从互联网下载所有 mvn 依赖项。构建 docker 文件时如何绑定(bind)本地 .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"]

最佳答案

您应该将项目的内容挂载到 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
  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

关于maven - 在构建阶段将 .m2 文件绑定(bind)到 docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52015939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com