
所有镜像发布于 https://hub.docker.com/r/csanchez/maven%EF%BC%8C%E6%89%A9%E5%B1%95%E8%87%AADocker%E5%AE%98%E6%96%B9%E9%95%9C%E5%83%8F%E7%9A%84%E7%89%88%E6%9C%AC%E5%90%8C%E6%97%B6%E5%8F%91%E5%B8%83%E4%BA%8E https://hub.docker.com/_/maven%E3%80%82
查看Docker Hub https://hub.docker.com/_/maven 和 https://hub.docker.com/r/csanchez/maven 获取最新标签列表
csanchez/maven 仓库下查看Docker Hub https://hub.docker.com/r/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 中添加自定义包,可按以下方式构建本地镜像:
Linux
bashdocker build --tag my_local_maven:3.6.0-jdk-8 .
Windows
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 .
测试使用 https://github.com/sstephenson/bats%EF%BC%88Linux%EF%BC%89%E5%92%8C https://github.com/pester/Pester%EF%BC%88Windows%EF%BC%8C%E9%9C%80Pester 4.x)编写,位于 tests 目录。通过环境变量 TAG 指定测试镜像:
Linux
bashTAG=jdk-11 bats tests
Windows
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
需向 https://github.com/docker-library/official-images 提交PR,通过 publish.sh 运行 generate-stackbrew-library.sh 实现。
查看镜像中软件的许可证信息。
通过 https://github.com/carlossg/docker-maven/issues 提交问题,或在Freenode的 #docker-library IRC频道联系官方镜像维护者。
欢迎贡献功能、修复或更新。大型贡献建议先通过 https://github.com/carlossg/docker-maven/issues 讨论,以确保方向正确并避免重复工作。
以下是 csanchez/maven 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务