自学内容网 自学内容网

基于Docker搭建Maven私服仓库

基于Docker搭建Maven私服仓库

Maven支持二进制,容器,helm cart、operator等方式安装运行。本文记录使用docker在内网搭建maven私服仓库。

1. 准备工作

1.1 部署要求

Nexus版本声明周期
*Sonatype Nexus Repository Version**Status**Initial Release Date**Beginning of Extended Maintenance**Sunset Date*
3.73.0General AvailabilityOctober 10, 2024October 10, 2025April 10, 2026
3.72.0General AvailabilitySeptember 4, 2024September 4, 2025March 4, 2026
3.71.0General AvailabilityAugust 8, 2024August 8, 2025February 8, 2026
3.70.0 - 3.70.2General AvailabilitySeptember 3, 2024 (3.70.2)July 10, 2024 (3.70.1)July 9, 2024 (3.70.0)July 9, 2025January 9, 2026

更多信息参考:Sonatype Nexus Repository 3 Versions StatusSonatype Sunsetting Information

操作系统

支持Linux、macos、windows;

1.2 资源要求

单机部署的系统要求:

  • 8CPU
  • 16GB RAM
  • 100GB 磁盘空间
  • 兼容的数据库
    • PostgreSQL Database (Recommended)
      • 200 Max Connections
      • 4GB Shared Buffer
      • 12GB Cache Size
    • Embedded H2 Database
      • 2703M Max Direct Memory Size (OrientDB only)

本文部署使用内嵌的H2数据库。

1.3 部署资源准备

拉取maven镜像,默认不带tag会拉取最新的版本。

]# docker pull sonatype/nexus3

# 查看版本,本文拉取的maven版本为3.73.0-12
]# docker sonatype/nexus3  | grep -i version
        "DockerVersion": "",
                "com.sonatype.license": "Apache License, Version 2.0",
                "io.buildah.version": "1.29.0",
                "version": "3.73.0-12"

创建本地文件夹用于挂载:

]# mkdir /data/nexus-data && chown -R 200 /data/nexus-data

2. 参考部署架构

下表展示了不同部署架构的规格:

Links to Reference ArchitecturesArchitecture 1Architecture 2Architecture 3Architecture 4Architecture 5
Max User Count501002005001,000+
Max Requests per Day20,00050,000100,000500,0001,000,000+
Max Repository Count2050200500500+
Max Blob Storage20GB200GB1TB50TB100TB+
Compatible EditionsPro or OSSProProProPro

本文使用docker单机部署maven仓库,参考官方Nexus Repository Reference Architecture 1,更多适用于生产环境的高可用部署方案参考其他Architecture。单机部署规格应该不超过如下限制:

  • 最多 50 个持有许可证的贡献开发人员,这些开发人员参与软件开发生命周期;
  • 每天最多 20,000 个请求;
  • 最多 20 个存储库;
  • 最大 20GB 的 blob 存储;

3. 启动maven容器

docker启动命令如下:

]# docker run -d -p 8081:8081 --name nexus3 -v /data/nexus-data:/nexus-data --restart=always sonatype/nexus3

查看容器状态:

]# docker ps
CONTAINER ID   IMAGE        COMMAND      CREATED          STATUS    PORTS          NAMES
fda202767290   sonatype/nexus3   "/opt/sonatype/nexus…"   23 minutes ago   Up 23 minutes   0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   nexus

如果需要排错,使用入门命令查看容器日志:

]# docker logs -f nexus3

测试nexus,响应正常

]# curl http://localhost:8081/

<!DOCTYPE html>
<html lang="en">
<head>
  <title>Sonatype Nexus Repository</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
  <meta name="description" content="Sonatype Nexus Repository"/>
  <meta http-equiv="X-UA-Compatible" content="IE=edge"/>
...

4. Nexus3配置

打开nexus3管理页面

浏览器使用<http://ip:8081打开nexus3管理页面,默认是未登录状态:

web-default

登录nexus3

获取admin密码,密码存放到如下路径文件中(本文环境)。

]# cat /data/nexus-data/admin.password 
45234ef3-a06d-4ece-a770-75911af505f1

对应容器中的路径为:/nexus-data/admin.password

使用用户名:admin,密码:45234ef3-a06d-4ece-a770-75911af505f1登录nexus,并按照向导修改密码、开启匿名访问。

配置代理仓库

Nexus默认使用的远程仓库为maven-central,国内网络环境从这个远程仓库下载依赖很慢。

repos

进入maven-central仓库,查看maven-central仓库配置的远程链接为:https://repo1.maven.org/maven2/

maven-central

这里回到repositories列表界面,创建一个repository,选择maven2(proxy)类型,然后设置如下参数:

maven-proxy

点击创建仓库,确保刚创建的仓库状态为Online - Ready to connect

repo-list

配置仓库组

将aliyun-central配置到仓库组,并且将aliyun-central排在maven-central上面。进入maven-public仓库如下界面,将aliyun-central移动到右侧,并排在最上面:

maven-group

创建用户

创建一个用于上传Jar包到仓库的用户,设置-Security-Users-Create local user,按照提示设置用户名和密码等信息,确保用户角色设置为nx-admin

user-mange

相关资料

  1. nexus安装:https://help.sonatype.com/en/installation-methods.html
  2. nexus容器安装:https://hub.docker.com/r/sonatype/nexus3/
  3. 研发提效必备技能:手把手教你基于Docker搭建Maven私服仓库-腾讯云开发者社区-腾讯云

原文地址:https://blog.csdn.net/codelearning/article/details/143472600

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!