首页 > 解决方案 > 带有docker卷的maven存储库映射不起作用

问题描述

我正在尝试在 maven docker 文件中使用 /root/.m2 目录挂载主机目录。目的是避免在每次构建时下载依赖项。但不知何故,maven 正在下载每个 docker build 的依赖项。我可以看到映射的主机目录是空的。

这是我的 Docker 撰写文件:

version: "2"

services:
    database:
        build: 
            context: ./database
            dockerfile: Dockerfile
        ports:  
            - "1433:1433"
    dynamodb-local:
        image: amazon/dynamodb-local
        ports:
            - "8000:8000"
    my-hub: 
        depends_on:
            - "database"
            - "dynamodb-local"
        volumes:
            - ./target/m2-repo:/root/.m2 #either this mapping is not working or mvn is not considering this directory for cache, so its downloading dependencies for each build.
            - ./target/log:/opt/jboss/wildfly/standalone/log #this is working, I can see logs
        build: ./my-hub
        ports:
            - "8080:8080"

这是我的 Dockerfile for maven,它的多阶段构建文件。

FROM maven:3.8.1-jdk-11 AS mvn-img

# Declaring expected volumes
VOLUME ["/root/.m2", "/opt/jboss/wildfly/standalone/log"]

COPY ./ /usr/src/my-hub

WORKDIR /usr/src/my-hub

#/root/.m2 volume mapping with host is not working, so its downloading the dependencies with each build.
RUN mvn clean package -DskipTests

FROM jboss/wildfly:24.0.0.Final

.
.
.
other part all working....

我尝试了其他方法,例如使用 -Dmaven.repo.local 手动设置 repo 路径。但不工作,如果我做错了什么,请告诉我,我不知道。谢谢你。

标签: dockermavendocker-compose

解决方案


推荐阅读