maven

s390x/maven Docker 镜像

Apache Maven是软件项目管理与综合工具,用于简化项目构建、依赖管理及流程标准化,提升开发效率。

1 次收藏下载次数: 0状态:社区镜像维护者:s390x仓库类型:镜像最近更新:11 天前
下载命令
点击查看

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中使用:

dockerfile
COPY pom.xml /tmp/pom.xml
RUN mvn -B -f /tmp/pom.xml -s /usr/share/maven/ref/settings-docker.xml dependency:resolve

要将自定义的settings.xml文件添加到镜像中,可以使用:

dockerfile
COPY 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文件:

yaml
version: '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中找到一些能够自动检测到的额外许可证信息。

对于任何预构建镜像的使用,镜像用户有责任确保对其中包含的所有软件的使用符合任何相关许可证的要求。

镜像拉取方式

您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

轩辕镜像加速拉取命令点我查看更多 maven 镜像标签

docker pull docker.xuanyuan.run/s390x/maven:<标签>

DockerHub 原生拉取命令

docker pull s390x/maven:<标签>
专业版 · 高速稳定拉取镜像
50GB 仅 ¥8/年
高速镜像下载在线技术支持专业版保障服务可用付费会员免广告