s390x/maven Docker 镜像
Apache Maven是软件项目管理与综合工具,用于简化项目构建、依赖管理及流程标准化,提升开发效率。
s390x/maven Docker镜像文档
镜像概述和主要用途
s390x/maven是针对IBM z/Architecture(s390x)平台构建的官方Maven镜像的特定架构仓库。Maven是一个软件项目管理和理解工具,基于项目对象模型(POM)的概念,能够从中央信息管理项目的构建、报告和文档。
该镜像提供了在s390x架构上运行Maven的便捷方式,无需在主机系统上安装Maven和Java开发环境,简化了项目构建流程并确保环境一致性。
核心功能和特性
- 基于官方Maven构建,针对s390x架构优化
- 提供多种Java版本支持(Eclipse Temurin、IBM Java、IBM Semeru等)
- 包含Maven的完整功能集,支持标准Maven命令
- 支持本地Maven仓库的持久化和重用
- 可自定义Maven配置和设置
- 支持以非root用户运行,增强安全性
- 轻量级设计,仅包含必要的依赖包
使用场景和适用范围
- 在s390x架构服务器上构建Java项目
- 持续集成/持续部署(CI/CD)流程中的构建步骤
- 需要隔离Maven环境的开发或测试场景
- 跨平台开发团队确保构建一致性
- 自动化测试和构建流程
- 需要快速搭建Maven环境而不影响主机配置的场景
支持的标签和相应Dockerfile链接
Eclipse Temurin系列
- https://github.com/carlossg/docker-maven/blob/64ef35f1a6ef3538a0c7e846647d33ffa6232390/eclipse-temurin-11-noble/Dockerfile
- https://github.com/carlossg/docker-maven/blob/64ef35f1a6ef3538a0c7e846647d33ffa6232390/eclipse-temurin-17-noble/Dockerfile
- https://github.com/carlossg/docker-maven/blob/64ef35f1a6ef3538a0c7e846647d33ffa6232390/eclipse-temurin-17-noble-maven-4/Dockerfile
- https://github.com/carlossg/docker-maven/blob/64ef35f1a6ef3538a0c7e846647d33ffa6232390/eclipse-temurin-21-noble/Dockerfile
- https://github.com/carlossg/docker-maven/blob/3e68954f87f8b9be35921fdd538c4d769362f3bf/eclipse-temurin-21-noble-maven-4/Dockerfile
- https://github.com/carlossg/docker-maven/blob/c774f7740e38fa4e4f4cec7153e4819cd9afd635/eclipse-temurin-25-noble/Dockerfile
- https://github.com/carlossg/docker-maven/blob/c774f7740e38fa4e4f4cec7153e4819cd9afd635/eclipse-temurin-25-noble-maven-4/Dockerfile
IBM Java系列
- https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/ibmjava-8/Dockerfile
IBM Semeru系列
- https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/ibm-semeru-11-noble/Dockerfile
- https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/ibm-semeru-17-noble/Dockerfile
- https://github.com/carlossg/docker-maven/blob/3e68954f87f8b9be35921fdd538c4d769362f3bf/ibm-semeru-17-noble-maven-4/Dockerfile
- https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/ibm-semeru-21-noble/Dockerfile
- https://github.com/carlossg/docker-maven/blob/3e68954f87f8b9be35921fdd538c4d769362f3bf/ibm-semeru-21-noble-maven-4/Dockerfile
- https://github.com/carlossg/docker-maven/blob/7df425991666b4cf7ce7130aa348aa940c15d9c4/ibm-semeru-25-noble/Dockerfile
- https://github.com/carlossg/docker-maven/blob/7df425991666b4cf7ce7130aa348aa940c15d9c4/ibm-semeru-25-noble-maven-4/Dockerfile
使用场景和适用范围
- 软件开发:在s390x架构上开发Java应用程序,需要Maven构建工具
- 持续集成/持续部署:在CI/CD流水线中集成Maven构建步骤
- 多环境一致性:确保开发、测试和生产环境中使用相同的Maven和Java版本
- 临时开发环境:快速搭建Maven环境,无需永久安装
- 教学和演示:安全地演示Maven功能,不影响主机系统配置
详细的使用方法和配置说明
基本使用方法
可以直接使用Maven Docker镜像运行Maven项目,将Maven命令传递给docker run:
console$ docker run -it --rm --name my-maven-project -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven s390x/maven:latest mvn clean install
参数说明:
-it:交互式终端--rm:容器退出后自动删除--name my-maven-project:指定容器名称-v "$(pwd)":/usr/src/mymaven:将当前目录挂载到容器内的工作目录-w /usr/src/mymaven:设置容器内的工作目录s390x/maven:latest:使用的镜像及标签mvn clean install:要执行的Maven命令
构建本地Docker镜像(可选)
这是一个基础镜像,包含最基本的必要软件包。如果需要添加自定义软件包到Dockerfile,可以按以下方式构建本地Docker镜像:
console$ docker build --tag my_local_s390x/maven:3.5.2-jdk-8 .
重用Maven本地仓库
可以通过创建卷并将其挂载到/root/.m2来跨容器重用本地Maven仓库:
console# 创建一个命名卷 $ docker volume create --name maven-repo # 首次运行会下载依赖项 $ docker run -it -v maven-repo:/root/.m2 s390x/maven mvn archetype:generate # 后续运行会重用已下载的依赖项 $ docker run -it -v maven-repo:/root/.m2 s390x/maven mvn archetype:generate
或者,可以使用主机的.m2缓存目录,与Eclipse/IDEA等IDE共享:
console$ 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 \ s390x/maven \ mvn clean package
打包本地仓库到镜像中
$MAVEN_CONFIG目录(默认为/root/.m2)可以配置为卷,因此在构建时复制到该目录的任何内容都会丢失。为此,存在/usr/share/maven/ref/目录,该目录中的任何内容都会在容器启动时复制到$MAVEN_CONFIG。
要创建预打包的仓库,创建一个包含所需依赖项的pom.xml,并在Dockerfile中使用:
dockerfileCOPY pom.xml /tmp/pom.xml RUN mvn -B -f /tmp/pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency:resolve
要将自定义的settings.xml文件添加到镜像中,可以使用:
dockerfileCOPY settings.xml /usr/share/maven/ref/
以非root用户运行
Maven需要用户主目录来下载工件,如果镜像中不存在该用户,则需要设置user.homeJava属性:
console$ docker run -v ~/.m2:/var/maven/.m2 -ti --rm -u 1000 -e MAVEN_CONFIG=/var/maven/.m2 s390x/maven mvn -Duser.home=/var/maven archetype:generate
Docker Compose配置示例
创建docker-compose.yml文件:
yamlversion: '3' services: maven: image: docker.xuanyuan.run/s390x/maven:latest volumes: - .:/usr/src/mymaven - maven-repo:/root/.m2 working_dir: /usr/src/mymaven command: mvn clean install volumes: maven-repo:
使用以下命令启动:
console$ docker-compose up
维护和支持信息
- 维护者:https://github.com/carlossg/docker-maven
- 获取帮助:https://dockr.ly/comm-slack、Server Fault、https://unix.stackexchange.com/help/on-topic或https://stackoverflow.com/help/on-topic
- 提交问题:https://github.com/carlossg/docker-maven/issues?q=
- 镜像更新:https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmaven
许可证信息
查看此镜像中包含的软件的https://www.apache.org/licenses/。
与所有Docker镜像一样,此镜像可能还包含其他软件,这些软件可能具有其他许可证(如基础发行版中的Bash等)。
可在https://github.com/docker-library/repo-info/blob/master/repos/maven中找到一些能够自动检测到的额外许可证信息。
对于任何预构建镜像的使用,镜像用户有责任确保对其中包含的所有软件的使用符合任何相关许可证的要求。
s390x 命名空间的其他可用镜像:
s390x/node
s390x/eclipse-temurin
s390x/ubuntu
s390x/buildpack-deps
s390x/mongo
s390x/monica
镜像拉取方式
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
DockerHub 原生拉取命令
用户好评
来自真实用户的反馈,见证轩辕镜像的优质服务