所有镜像发布于 csanchez/maven,扩展自Docker***镜像的版本同时发布于 maven。
查看Docker Hub maven 和 csanchez/maven 获取最新标签列表
csanchez/maven 仓库下查看Docker Hub csanchez/maven 获取最新标签列表
Apache Maven 是一款软件项目管理与理解工具。基于项目对象模型(POM)概念,Maven可从中央信息源管理项目的构建、报告和文档。
可直接使用Maven Docker镜像运行Maven项目,通过 docker run 传递Maven命令:
bashdocker run -it --rm --name my-maven-project -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven:3.3-jdk-8 mvn verify
powershelldocker run -it --rm --name my-maven-project -v "$(Get-Location)":C:/Src -w C:/Src csanchez/maven:3.3-jdk-8-windows mvn verify
powershelldocker run -it --rm --name my-maven-project -v "$(Get-Location)":C:/Src -w C:/Src maven:3.3-jdk-8-windows mvn clean install
此为基础镜像,包含最精简的必要依赖。若在 Dockerfile 中添加自定义包,可按以下方式构建本地镜像:
bashdocker build --tag my_local_maven:3.6.0-jdk-8 .
bashdocker build -f Dockerfile.windows --tag my_local_maven:3-jdk-9-windows --build-arg WINDOWS_DOCKER_TAG=1803 .
可使用Maven构建应用并通过多阶段构建将其打包到不含Maven的镜像中:
dockerfile# 构建阶段 FROM maven WORKDIR /usr/src/app COPY pom.xml . RUN mvn -B -e -C -T 1C org.apache.maven.plugins:maven-dependency-plugin:3.1.1:go-offline COPY . . RUN mvn -B -e -o -T 1C verify # 打包阶段(不含Maven) FROM openjdk COPY --from=0 /usr/src/app/target/*.jar ./
通过创建卷并挂载到 /root/.m2,可在容器间重用本地Maven仓库:
bashdocker volume create --name maven-repo docker run -it -v maven-repo:/root/.m2 maven mvn archetype:generate # 下载依赖 docker run -it -v maven-repo:/root/.m2 maven mvn archetype:generate # 重用已下载依赖
或直接使用主机的 .m2 缓存目录(如与IDE共享的目录):
bashdocker 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 mvn package
$MAVEN_CONFIG 目录(默认 /root/.m2 或 C:\Users\ContainerUser\.m2)可配置为卷,故构建时复制的内容会丢失。为此提供 /usr/share/maven/ref/(或 C:\ProgramData\Maven\Reference)目录,容器启动时会将其内容复制到 $MAVEN_CONFIG。
要创建预打包仓库,需准备含所需依赖的 pom.xml 并在 Dockerfile 中使用:
bashCOPY pom.xml /tmp/pom.xml RUN mvn -B -f /tmp/pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency:resolve
添加自定义 settings.xml 到镜像:
bashCOPY settings.xml /usr/share/maven/ref/
示例可查看 tests 目录。
Maven需用户主目录存储依赖,若用户不存在需设置 user.home Java属性。例如,以用户 1000 运行并挂载主机Maven仓库:
bashdocker run -v ~/.m2:/var/maven/.m2 -ti --rm -u 1000 -e MAVEN_CONFIG=/var/maven/.m2 maven mvn -Duser.home=/var/maven archetype:generate
maven 镜像提供多种变体,适用于不同场景:
maven:<version>默认镜像,适用于临时容器(挂载源码运行)及作为基础镜像构建其他镜像,含最精简依赖。
bashdocker build -t maven .
测试使用 bats(Linux)和 pester(Windows,需Pester 4.x)编写,位于 tests 目录。通过环境变量 TAG 指定测试镜像:
bashTAG=jdk-11 bats tests
powershell$env:TAG="jdk-11" ; Invoke-Pester -Path tests
Linux:
bashfor dir in $(/bin/ls -1 -d */ | grep -v 'tests\|windows'); do TAG=$(basename $dir) bats tests; done
Windows:
powershellGet-ChildItem -Path windows\* -File -Include "Dockerfile.windows-*" | ForEach-Object { Push-Location ; $env:TAG=$_.Name.Replace('Dockerfile.windows-', '') ; Invoke-Pester -Path tests ; Pop-Location }
brew install bats 安装bashgit submodule init git submodule update
需向 docker-library/official-images 提交PR,通过 publish.sh 运行 generate-stackbrew-library.sh 实现。
查看镜像中软件的许可证信息。
通过 GitHub issue 提交问题,或在Freenode的 #docker-library IRC频道联系***镜像维护者。
欢迎贡献功能、修复或更新。大型贡献建议先通过 GitHub issue 讨论,以确保方向正确并避免重复工作。

来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429