Sign inSign up

dragonzw/builder-maven

By dragonzw

Updated 6 months ago

用于 Jenkins-Agent 中的 PodTemplate 使用,内置 Java Maven 的应用。

Image
0

1.3K

dragonzw/builder-maven repository overview

核心结论

dragonzw/builder-maven 是**dragonzw/builder-base 镜像的 Maven 专项版本**,其核心作用是封装一个 定制化的 Maven 构建基础环境,提供预安装的 Maven 工具、Java 依赖管理与系统优化,用于作为“父镜像”快速构建 Java 应用(尤其是 Maven 项目)的容器镜像(如编译 Java 源码、管理 Maven 依赖、打包 WAR/JAR 文件)。

关键依据(来自对话中的“builder-base 镜像”信息)

在之前的对话中,dragonzw/builder-base 镜像的定义明确提到:

  • 它是一个定制化的构建基础镜像,预安装Java 构建工具maven/gradle)、JDK(Java 运行时)、git(拉取代码)、Maven 包管理mvn 命令)等;
  • 典型使用场景是作为父镜像构建 Java 应用镜像(如通过 Dockerfile 继承 builder-base,用 mvn clean package 编译 Maven 项目)。

而**builder-maven** 是**builder-base 的细分**,将“Maven 构建”的能力独立封装,更聚焦 Java/Maven 开发者的需求。

dragonzw/builder-maven 的具体功能(推断)

基于“builder-base 的 Java/Maven 相关配置”和“Maven 构建的常规需求”,builder-maven 镜像应包含以下核心功能:

1. Maven 基础环境
  • 预安装特定版本的 Maven(如 Maven 3.8、3.9,标签可能标注版本,如 maven-3.9);
  • 设置MAVEN_HOME(Maven 安装目录)、JAVA_HOME(JDK 安装目录)等环境变量;
  • 集成Maven 包管理mvn 命令)、Maven 仓库配置(如预设置国内镜像源 https://maven.aliyun.com/repository/public,加速依赖下载)。
2. Java 构建工具集
  • 预安装特定版本的 JDK(如 JDK 8、11、17,标签可能标注版本,如 jdk-17);
  • 集成版本控制工具git,用于拉取 Maven 项目源码);
  • 包含辅助工具curl/wget 下载依赖、jq 处理 JSON、tar 压缩产物)。
3. 系统优化
  • 基于轻量级基础镜像(如 alpine:3.19ubuntu:22.04),体积精简(通常 < 300MB);
  • 预配置时区TZ=Asia/Shanghai)、语言编码LANG=C.UTF-8);
  • 清理冗余文件(如缓存、文档),减小镜像体积。
4. 容器化友好设计
  • 暴露构建端口(如 8080,用于测试 Java 服务);
  • 提供数据持久化目录(如 /root/.m2 存储 Maven 本地仓库、/app 存储源码);
  • 非 root 用户运行构建(如 maven 用户),提升安全性。
典型使用场景

dragonzw/builder-maven 的核心价值是简化 Maven 项目的容器化构建流程,适用于以下场景:

1. 作为父镜像构建 Java(Maven)应用

通过 Dockerfile 继承 builder-maven,直接编译 Maven 项目并生成镜像(无需重复安装 Maven/JDK):

# 继承 builder-maven 镜像(假设标签为 maven-3.9-jdk-17)
FROM dragonzw/builder-maven:maven-3.9-jdk-17  
# 复制 Maven 项目源码到容器
COPY ./src /app  
# 切换到源码目录
WORKDIR /app  
# 用预安装的 Maven 编译(生成 WAR/JAR 文件)
RUN mvn clean package -DskipTests  
# 设置容器启动命令(运行 JAR 文件)
CMD ["java", "-jar", "/app/target/app.jar"]  
2. 统一团队 Maven 构建环境

团队内所有成员使用同一 builder-maven 镜像,避免因本地 Maven 版本、JDK 版本、依赖差异导致的“构建不一致”问题。

3. CI/CD 流水线集成

在 Jenkins、GitLab CI 等流水线中,用 builder-maven 作为构建节点镜像,快速完成 Maven 项目的编译、测试、打包(如生成 JAR 文件后,用 b2i-sample 镜像容器化)。

注意事项
  1. builder-base 的关系
    builder-mavenbuilder-baseMaven 专项子集,功能更聚焦(仅保留 Maven/Java 相关工具),体积更小。若需构建多语言应用(如同时包含 Go 和 Java),仍可使用 builder-base

  2. 非官方镜像的风险
    该镜像由个人(dragonzw)维护,稳定性、安全性不如官方 Maven 镜像(如 maven:3.9-alpineopenjdk:17-jdk-slim)。生产环境建议优先使用官方 Maven 镜像基于官方镜像自行定制(如添加团队常用依赖)。

  3. 版本兼容性
    镜像标签(Tag)通常对应Maven 版本(如 maven-3.9)、JDK 版本(如 jdk-17)和基础系统版本(如 alpine-3.19),需确认与目标应用的兼容性(如 Maven 项目是否支持该版本)。

总结

dragonzw/builder-maven 是一个定制化的 Maven 构建基础镜像,核心价值是将“Maven 工具+Java 依赖管理+系统优化”打包为标准化环境,作为“父镜像”快速构建 Java(Maven)应用镜像。其定位适合Java/Maven 开发者简化构建流程、团队统一构建环境、CI/CD 流水线集成,是 builder-base 镜像的 Maven 专项延伸。

Tag summary

Content type

Image

Digest

sha256:b93a2fa56

Size

867.2 MB

Last updated

6 months ago

docker pull dragonzw/builder-maven:v3.3.0-jdk11-podman