「Nexus」- Sonatype Nexus Repository OSS

认识

官网: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";
  }
}

服务迁移

具体的迁移方案取决于场景与需求,现在 2025-10-13 我们最常用的方法仍旧是复制数据目录。

应用

WIP