基于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.0 | General Availability | October 10, 2024 | October 10, 2025 | April 10, 2026 |
3.72.0 | General Availability | September 4, 2024 | September 4, 2025 | March 4, 2026 |
3.71.0 | General Availability | August 8, 2024 | August 8, 2025 | February 8, 2026 |
3.70.0 - 3.70.2 | General Availability | September 3, 2024 (3.70.2)July 10, 2024 (3.70.1)July 9, 2024 (3.70.0) | July 9, 2025 | January 9, 2026 |
… |
更多信息参考:Sonatype Nexus Repository 3 Versions Status,Sonatype 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)
- PostgreSQL Database (Recommended)
本文部署使用内嵌的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 Architectures | Architecture 1 | Architecture 2 | Architecture 3 | Architecture 4 | Architecture 5 |
---|---|---|---|---|---|
Max User Count | 50 | 100 | 200 | 500 | 1,000+ |
Max Requests per Day | 20,000 | 50,000 | 100,000 | 500,000 | 1,000,000+ |
Max Repository Count | 20 | 50 | 200 | 500 | 500+ |
Max Blob Storage | 20GB | 200GB | 1TB | 50TB | 100TB+ |
Compatible Editions | Pro or OSS | Pro | Pro | Pro | Pro |
本文使用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管理页面,默认是未登录状态:
登录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
,国内网络环境从这个远程仓库下载依赖很慢。
进入maven-central
仓库,查看maven-central
仓库配置的远程链接为:https://repo1.maven.org/maven2/
这里回到repositories列表界面,创建一个repository,选择maven2(proxy)
类型,然后设置如下参数:
- Name:aliyun-central
- Version policy:Release
- Layout policy:Strict
- Remote storage:http://maven.aliyun.com/nexus/content/groups/public
点击创建仓库,确保刚创建的仓库状态为Online - Ready to connect
配置仓库组
将aliyun-central配置到仓库组,并且将aliyun-central
排在maven-central
上面。进入maven-public
仓库如下界面,将aliyun-central
移动到右侧,并排在最上面:
创建用户
创建一个用于上传Jar包到仓库的用户,设置-Security-Users-Create local user,按照提示设置用户名和密码等信息,确保用户角色设置为nx-admin
。
相关资料
- nexus安装:https://help.sonatype.com/en/installation-methods.html
- nexus容器安装:https://hub.docker.com/r/sonatype/nexus3/
- 研发提效必备技能:手把手教你基于Docker搭建Maven私服仓库-腾讯云开发者社区-腾讯云