认识
官网:https://www.sonatype.com/products/sonatype-nexus-oss
文档:https://help.sonatype.com/en/sonatype-nexus-repository.html 该文档主要针对 Pro 版本
仓库:https://github.com/sonatype/nexus-public | https://github.com/sonatype/nexus-oss
Nexus,其用于搭建私有仓库。它可以是 MAVEN 仓库,可以是 PYPI 仓库,可以是 DOCKER 镜像仓库,可以是很多类型的仓库。且也可以同时支持这些格式。简而言之,Nexus 是个制品仓库,能够用来存储各种软件制品。
补充说明:Sonatype Nexus Repository Pro 是一款企业级软件仓库管理工具。它可以管理多种类型仓库,包括宿主仓库用于存储内部构件,代理仓库缓存外部资源以加速访问和节省带宽,还有仓库组便于统一访问。能与多种构建工具集成,如 Maven、Gradle 等。它提供了强大的安全和访问控制功能,支持与身份验证系统集成,保障数据安全。并且有高可用性和灾备支持,还能使用外部数据库,提升性能与可扩展性。参考 Upgrade to Sonatype Nexus Repository Pro 页面,以获得其功能特性的简介。我们主要研究的是 OSS 版本,所以相关内容我们不再讨论。
组成
WIP
性质
官方文档中列出了所有支持的格式 https://help.sonatype.com/repomanager3/formats
通过 LDAP 登陆
Light LDAP https://github.com/lldap/lldap/blob/main/example_configs/nexus.md
构建
版本选择
参考 GitHub/Release 页面 | https://github.com/sonatype/nexus-public/releases
现在(11/05/2024),最新 release-3.73.0-12 版本;
部署方式
镜像:https://hub.docker.com/r/sonatype/nexus3/
docker.io/sonatype/nexus3:3.83.1
ccr.ccs.tencentyun.com/d3rm-3rd/docker.io_sonatype_nexus3:3.83.1
服务部署
安装文档 | https://help.sonatype.com/en/installation-and-upgrades.html
下载地址 | https://www.sonatype.com/products/sonatype-nexus-oss-download
on Kubernetes with Manifest
1、通过 kompose 工具,将 docker-compose 转化为用于 Kubernetes 部署的 YAML 文件;
2、修改 securityContext 配置:
securityContext:
runAsUser: 200
fsGroup: 200
3、kubectl apply -f ./
4、初始帐号密码通常保存在 /nexus-data/admin.password 中
on Linux with Docker Compose
sonatype/nexus3 – Docker Image | Docker Hub
Run Behind a Reverse Proxy
该笔记将记录:通过 Docker Compose 部署 Nexus 3.33.0 版本的方法,以及相关问题的解决办法。
镜像:https://hub.docker.com/r/sonatype/nexus3/
文档:https://help.sonatype.com/en/installation-methods.html
第一步、编写 Docker Compose 文件
version: "3"
services:
package-repository:
image: sonatype/nexus3:3.64.0
container_name: package-repository
restart: always
volumes:
- "./data:/nexus-data"
- /etc/localtime:/etc/localtime
ports:
- "8081:8081"
第二步、启动服务并测试
# 根据文档,nexus-data,会被 UID=200 的进程 Nexus 写入数据,所以: mkdir -pv /srv/hdd/package-repository/nexus-data chown 200 /srv/hdd/package-repository/nexus-data # 启动服务 docker-compose up -d # 查看运行日志: docker-compose logs -f
第三步、配置 Nginx 代理
server
{
listen 80;
server_name repo.example.com;
client_max_body_size 4G;
location /
{
# Use IPv4 upstream address instead of DNS name to avoid attempts by nginx to use IPv6 DNS lookup
proxy_pass http://127.0.0.1:8081/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto "https";
}
}
服务迁移
- https://github.com/Strik3rZ/Nexus-Repo-Migration
- https://gist.github.com/karlvr/5a4321f9ddf193ceb122849f8fb806d1
具体的迁移方案取决于场景与需求,现在 2025-10-13 我们最常用的方法仍旧是复制数据目录。
应用
WIP