)
Jeepay 支付系统镜像发布指南使用 Maven Jib 插件构建并推送 Docker 镜像无需 Docker 环境【免费下载链接】jeepayJeepay是一套适合互联网企业使用的开源支付系统支持多渠道服务商和普通商户模式。已对接微信支付支付宝云闪付官方接口支持聚合码支付。项目地址: https://gitcode.com/GitHub_Trending/je/jeepay导读本文基于 Jeepay 开源支付系统仓库中的 docker/push-to-docker.md 部署文档系统讲解如何利用 Google 开源的Jib Maven 插件在完全不依赖本地 Docker 守护进程的前提下将 Jeepay 三大后端服务支付网关jeepay-payment、运营后台jeepay-manager、商户后台jeepay-merchant直接构建为 Docker 镜像并推送到远程镜像仓库如阿里云容器镜像服务 ACR。阅读并实践本文后你将掌握mvn jib:build的完整参数用法、Jib 插件的仓库内配置细节以及它与仓库内其他镜像发布方式Dockerfile 构建、多架构 manifest 发布脚本之间的区别与取舍。一、为什么选择 Jib无需 Docker 环境的镜像构建传统 Java 项目发布 Docker 镜像通常需要在本机安装 Docker、编写 Dockerfile然后执行docker builddocker push。而 Jeepay 文档给出的方案走的是另一条路——JibJib 是一个 Maven/Gradle 插件它直接解析项目编译产物JAR 与依赖来组装镜像层全程由插件自身在 JVM 进程内完成不调用本地 Docker 守护进程daemon因此构建机上可以没有 Docker构建产物直接推送到远程仓库Registry天然适配 CI/CD 流水线镜像按“基础镜像层 / 依赖层 / 资源层 / 类与字节码层”分层缓存增量构建速度快。这正是原文档第 2 步标题中“不需要 docker 环境”的含义——开发机或 CI 服务器上只要安装了 JDK 与 Maven即可完成镜像的构建与推送。从仓库源码看Jib 插件已经在所有可执行模块中内置配置好了根 pom.xml 的pluginManagement中声明了jib-maven-plugin3.2.1 版本而jeepay-payment、jeepay-manager、jeepay-merchant三个模块的pom.xml均引用了该插件并指定了容器启动入口plugin groupIdcom.google.cloud.tools/groupId artifactIdjib-maven-plugin/artifactId configuration container entrypoint sh,-c,java $JVM_OPTS -cp $( cat /app/jib-classpath-file ) $( cat /app/jib-main-class-file ) $JAVA_ARGS /entrypoint /container /configuration /plugin也就是说仓库已为每个模块约定好统一的 JVM 启动方式支持通过JVM_OPTS/JAVA_ARGS环境变量注入 JVM 参数与程序参数你只需要执行文档中的mvn jib:build命令并传入目标镜像信息即可。二、操作前置条件在执行本文命令前请确认满足以下条件JDK 17 及以上Jeepay 根 pom.xml 中java.version为17且基于 Spring Boot 3.3.7 构建必须使用 JDK 17 或更高版本编译。Maven 3.6用于执行mvn install与mvn jib:build。镜像仓库账号本指南以阿里云容器镜像服务ACR为例需要准备好镜像仓库域名Registry 地址如registry.cn-beijing.aliyuncs.com命名空间Namespace如jeequan用户名与密码用于推送鉴权文档中通过环境变量注入避免明文写死在命令历史中。仓库代码已完整克隆到本地当前仓库根目录包含jeepay-payment、jeepay-manager、jeepay-merchant三个模块目录。说明文档中的DOCKER_IMAGE_TAGv1.14.0-alpha为示例版本号你可以替换为实际的发布版本。当前仓库根 pom.xml 中isys.version属性为3.2.0实际发布时建议保持一致。三、第一步编译项目mvn install文档第一步是对整个项目执行 Maven 全量编译mvn install在仓库根目录执行该命令Maven 会依据根 pom.xml 中声明的模块顺序构建全部子模块模块说明jeepay-core基础核心库工具类、JWT、实体、异常等jeepay-service数据库 Service 与 Mapper 层jeepay-components组件包MQ 消息队列、OSS 对象存储jeepay-manager运营平台管理端可执行服务jeepay-merchant商户平台管理端可执行服务jeepay-payment支付统一网关可执行服务三个可执行模块的最终产物命名由其pom.xml中的finalName决定如jeepay-payment.jar。这一步保证了后续jib:build时各模块的 JAR 产物已就绪。四、第二步使用 Jib 构建并推送镜像文档给出的核心命令如下以三个服务逐一推送为例。务必在仓库根目录执行并通过cd进入对应模块目录后再运行export DOCKER_REGISTRYregistry.cn-beijing.aliyuncs.com export DOCKER_NAMESPACEjeequan export DOCKER_IMAGE_TAGv1.14.0-alpha export DOCKER_REGISTRY_USERNAMEusername1 export DOCKER_REGISTRY_PASSWORDpassword1 cd jeepay-payment mvn jib:build \ -Djib.to.image$DOCKER_REGISTRY/$DOCKER_NAMESPACE/jeepay-payment:$DOCKER_IMAGE_TAG \ -Djib.to.auth.username$DOCKER_REGISTRY_USERNAME \ -Djib.to.auth.password$DOCKER_REGISTRY_PASSWORD cd ../jeepay-merchant mvn jib:build \ -Djib.to.image$DOCKER_REGISTRY/$DOCKER_NAMESPACE/jeepay-merchant:$DOCKER_IMAGE_TAG \ -Djib.to.auth.username$DOCKER_REGISTRY_USERNAME \ -Djib.to.auth.password$DOCKER_REGISTRY_PASSWORD cd ../jeepay-manager mvn jib:build \ -Djib.to.image$DOCKER_REGISTRY/$DOCKER_NAMESPACE/jeepay-manager:$DOCKER_IMAGE_TAG \ -Djib.to.auth.username$DOCKER_REGISTRY_USERNAME \ -Djib.to.auth.password$DOCKER_REGISTRY_PASSWORD4.1 参数逐项解析参数作用示例值DOCKER_REGISTRY镜像仓库域名registry.cn-beijing.aliyuncs.com阿里云北京地域 ACRDOCKER_NAMESPACE仓库命名空间对应 ACR 中的命名空间jeequanDOCKER_IMAGE_TAG镜像标签建议与发布版本一致v1.14.0-alphaDOCKER_REGISTRY_USERNAME仓库登录用户名username1DOCKER_REGISTRY_PASSWORD仓库登录密码password1-Djib.to.image目标镜像完整坐标registry/namespace/service:tagregistry.cn-beijing.aliyuncs.com/jeequan/jeepay-payment:v1.14.0-alpha-Djib.to.auth.username推送鉴权用户名命令行覆盖优先级高于配置文件username1-Djib.to.auth.password推送鉴权密码password1三个镜像的最终坐标分别为$DOCKER_REGISTRY/$DOCKER_NAMESPACE/jeepay-payment:$DOCKER_IMAGE_TAG$DOCKER_REGISTRY/$DOCKER_NAMESPACE/jeepay-merchant:$DOCKER_IMAGE_TAG$DOCKER_REGISTRY/$DOCKER_NAMESPACE/jeepay-manager:$DOCKER_IMAGE_TAG4.2 命令行为说明jib:build表示“构建并推送”到远程仓库若只想在本地构建输出到本地 Docker daemon可改用jib:dockerBuild鉴权信息通过-D属性直接传给插件不会写入任何文件比在~/.docker/config.json中维护登录态更适合临时或流水线场景Jib 会使用仓库中配置的默认基础镜像Jib 默认拉取eclipse-temurin系列 JRE 镜像并自动选定与构建环境匹配的平台构建完成后无需任何 Docker 命令即可在目标服务器上docker pull使用。五、镜像产物与容器运行验证镜像推送成功后即可在任何装有 Docker 的服务器上拉取运行。以支付网关为例其运行端口与启动方式可从仓库中的 jeepay-payment/Dockerfile 与 docker-compose.yml 得到印证镜像基础基于eclipse-temurin:17-jreJRE 17 运行时暴露端口9216payment、9217manager、9218merchant外部配置通过--spring.config.additional-locationfile:/jeepayhomes/service/app/application.yml挂载外部application.yml覆盖默认配置健康检查Dockerfile 内使用/dev/tcp端口探测作为 HEALTHCHECK。仓库根目录的 docker-compose.yml 展示了与本文镜像发布配套的完整部署形态三个后端服务payment、manager、merchant加上 MySQL 8、Redis 6.2、RocketMQ 5.3.1以及对应的三个前端 UI 容器端口映射为9216 / 9217 / 9218后端与9226 / 9227 / 9228前端。如果你使用的是本文推送的远程镜像只需把 compose 文件中对应服务的image指向registry.cn-beijing.aliyuncs.com/jeequan/jeepay-xxx:tag即可完成从“构建推送”到“容器化部署”的闭环。六、与仓库内其他镜像发布方式对比Jeepay 仓库在 docker/ 目录下同时提供了多条镜像发布路径理解它们有助于按场景选择方式关键命令/脚本是否需要本地 Docker特点Jib 直接推送本文mvn jib:build不需要无守护进程依赖适合 CI层缓存构建快Dockerfile 构建docker/publish-dockerhub.sh需要先mvn clean package再docker builddocker push支持PUSH_LATEST追加 latest 标签多架构 Manifest 发布docker/publish-swr.sh需要支持--platform面向华为云 SWR分别构建linux/amd64与linux/arm64镜像再用docker manifest合并为多架构清单默认三个后端服务全量发布从 docker/publish-swr.sh 可以看到多架构场景下需要先为每个平台打上-amd64/-arm64后缀的独立镜像标签再通过docker manifest create与docker manifest annotate合成多架构清单——这与 Jib 单命令直推的体验形成鲜明对比如果你需要同时支持 amd64 与 arm64 两种架构建议直接使用 docker/publish-swr.sh 脚本如果只是面向单一架构如云服务器 amd64快速发布本文的 Jib 方案最简洁。另外仓库还提供了一条“构建 运行”一体化的路径在根目录执行docker compose up --build即可基于各模块目录下的 Dockerfile 在本地完成镜像构建并启动整套支付环境适合开发联调详见 docker-compose.yml 顶部注释。七、常见问题与注意事项版本号一致性镜像 Tag如v1.14.0-alpha建议与根 pom.xml 的isys.version当前为3.2.0保持一致避免“镜像版本与代码版本对不上”的排查困扰。鉴权失败确认DOCKER_REGISTRY_USERNAME/DOCKER_REGISTRY_PASSWORD对应的是镜像仓库推送账号阿里云 ACR 需要先在控制台创建“访问凭证”且命名空间已存在。Maven 仓库访问Jib 构建需要从远程拉取基础镜像层构建机需能访问目标 Registry 与公共 Maven 中央仓库内网 CI 环境可预先配置 Maven 镜像源。不使用-DskipTests的场景文档第一步mvn install会执行测试若希望加速可改为mvn install -DskipTests与仓库发布脚本 docker/publish-swr.sh 中的mvn clean package -DskipTests思路一致。多架构支持本文 Jib 命令默认按构建机架构推送单架构镜像若需多架构请参考第六节切换为 docker/publish-swr.sh 的多平台发布流程。八、总结docker/push-to-docker.md提供了一条面向 CI/CD 的极简镜像发布路径mvn install完成编译 → 三个模块分别执行mvn jib:build直推镜像。结合仓库源码可以看到Jib 插件的容器入口已在各模块pom.xml中预置镜像运行所需的端口、配置挂载与健康检查则由配套的 Dockerfile 与 docker-compose.yml 承接。对于需要多架构发布的场景仓库还备有 docker/publish-swr.sh 脚本作为替代方案。掌握本文内容后你可以将 Jeepay 三个后端服务无缝接入任意主流的镜像仓库与容器编排平台。【免费下载链接】jeepayJeepay是一套适合互联网企业使用的开源支付系统支持多渠道服务商和普通商户模式。已对接微信支付支付宝云闪付官方接口支持聚合码支付。项目地址: https://gitcode.com/GitHub_Trending/je/jeepay创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考