有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在docker容器中高效地构建maven项目?

我试图通过缩短构建过程的持续时间来改进构建过程。构建是在基于official maven docker image的docker容器中完成的

我现在这样做的效果很好,但是没有为后续构建保留本地maven存储库,这意味着每次构建都需要再次进行所有下载

让我们关注一下我到底想改进什么。 我尝试了以下步骤: 1.为maven创建docker卷。m2目录 2.构建自定义maven映像(包含自定义maven设置) 3.基于该映像运行docker容器,从步骤1装载卷并绑定装载maven项目(包含顶级pom文件的目录)

以下是自定义maven docker映像的dockerfile:

FROM maven:3.6.1-jdk-11

# Use custom settings file for maven
COPY my-settings.xml /usr/share/maven/conf/settings.xml

CMD ["/bin/bash"]

下面是完成其余工作的bash脚本

# Provide basis for Maven local repository reuse
docker volume create --name maven-repo

# Build maven docker image with custom settings.xml
docker build --file "${WORKSPACE}"/tools/maven/Dockerfile \
             --tag my-maven-image:latest \
             "${WORKSPACE}"/tools/maven/

# Build using maven in the container
# The options -it are just there for debug purposes
docker run -it \
        --mount source=maven-repo,destination=/root/.m2 \
        --mount type=bind,source="${WORKSPACE}"/my-maven-project,destination=/usr/src/my-maven-project \
        --name maven-container my-maven-image:latest \
        --workdir /usr/src/my-maven-project
        mvn clean install

我希望mvn clean install在容器的/usr/src/my-maven-project目录中运行。相反,找不到此目录

我还计划在docker run命令开始工作后立即取消它的交互模式,我假设maven命令的日志可以在docker容器的日志中找到

成功构建之后,我假设工件将位于相同的目录中,就像我从docker主机运行maven命令一样


共 (0) 个答案