仓库管理软件-sonatype nexus

开发者的仓库管理软件Nexs介绍

Sonatype Nexus Repository通常被称作为Nexus, 是由 Sonatype 出品的目前世界上最流行仓库管理软件。它在仓库管理方面的地位,和Git在源代码管理的地位是类似的。

Nexus3可以解决我的痛点

它支持maven,docker,npm,yum,apt,pypi等多种仓库,而且支持本地缓存,自动远程拉取,管理私有包等功能。

源起:

来源于我厌烦了内外网频繁的python依赖包和yum依赖的迁移。甚至问genimi关于写了个快速迁移的bash脚本,详情请点击,跳转到我的gitee仓库

我就想有没有这样的工具,自动管理python依赖包,方便我甚至其他开发者内网一键下载,就像外网一样简单。就问了Gemini和豆包,

他们首先向我推荐了内网 PyPI镜像服务器的devpi ,然后提供了企业方案的Sonatype Nexus

优缺点如下:

方案名称 适用场景 优点 缺点
Sonatype Nexus (推荐) 企业级通用方案 支持多种镜像源(Python, Docker, NPM, Maven),界面友好,权限控制极强。 相对占用内存较大(Java 开发)。
Devpi Python 深度用户 专门为 Python 设计,支持继承、同步和索引,功能非常强大。 配置相对复杂,对多语言支持差。
pypiserver 极简/临时环境 极其轻量,一个命令就能启动。 权限管理较弱,缺乏图形化界面。

Gemini核心建议:

如果你需要安全性高、多用户管理、且未来可能还要存放 Docker 镜像Sonatype Nexus 是首选。如果追求极致轻量,只存几个包,选 pypiserver

Nexus doker 安装流程

1. 环境准备

确保你的内网服务器已经安装了 DockerDocker Compose

2. 创建部署目录

为了保证数据在容器重启后不丢失,我们需要在宿主机创建持久化目录。

# 创建基础目录
mkdir -p /opt/nexus/nexus-data
# 必须赋予权限,Nexus 内部运行用户为 200
chown -R 200:200 /opt/nexus/nexus-data
cd /opt/nexus

3. 编写 docker-compose.yml

在该目录下创建 docker-compose.yml 文件:

version: '3.8'

services:
  nexus:
    image: sonatype/nexus3:latest
    container_name: nexus-server
    restart: always
    ports:
      - "8081:8081" # Web 管理界面及 PyPI 服务端口
    volumes:
      - ./nexus-data:/nexus-data
    environment:
      - INSTALL4J_ADD_VM_PARAMS=-Xms2g -Xmx2g -XX:MaxDirectMemorySize=2g # 限制内存使用,可根据服务器配置调整

4. 启动服务

在当前目录下运行:

docker-compose up -d

5. 初始化配置(关键步骤)

第一步:获取初始密码

启动后,你需要获取管理员初始密码:

docker exec nexus-server cat /nexus-data/admin.password

第二步:登录 Web 界面

  1. 访问:http://服务器IP:8081
  2. 点击右上角 Sign in,用户名:admin,密码为刚才查看到的字符串。
  3. 按照向导修改密码,并选择 Enable anonymous access(允许内网匿名下载,提高一键安装的体验)。

第三步:创建 PyPI 仓库

  1. 点击顶部 齿轮(Settings) -> Repositories -> Create repository
  2. 选择 pypi (hosted) 类型(这是用来存放你从外网迁移进来的包)。
  3. 命名为 pypi-internal,其他默认。
  4. 点击 Create repository

6. 如何从外网迁移包到此服务器

你在外网下载好的 .whl.tar.gz 包,可以通过 Twine 工具一键上传。

在外网机器上操作:

# 1. 安装上传工具
pip install twine
# 2. 上传包到内网服务器(假设内网IP为 192.168.1.100)
twine upload --repository-url http://192.168.1.100:8081/repository/pypi-internal/  -u admin -p <你的新密码>  /path/to/your/packages/*

7. 终端用户配置

为了让内网所有用户(Windows/Linux)实现“一键下载”,你只需要告诉他们执行以下命令(或者你写成一个 .bat.sh 脚本分发给他们):

# 修改 pip 全局源指向内网
pip config set global.index-url http://192.168.1.100:8081/repository/pypi-internal/simple
# 信任该主机(因为没加 HTTPS)
pip config set global.trusted-host 192.168.1.100

配置完成后,用户下载包就像平时一样: pip install requests —— 这会直接从你的内网 Nexus 极速下载。

其他注意事项

1.pip config 路径在

  • Linux/macOS: 通常是 ~/.pip/pip.conf~/.config/pip/pip.conf

  • Windows: 通常是 %APPDATA%\pip\pip.ini(路径类似 C:\Users\<用户名>\AppData\Roaming\pip\pip.ini

  • 默认不设置没有这个文件夹和文件,可命令设置后自动创建或者手动创建

2.验证配置,如果输出中包含你设置的 index-url,说明配置已生效

pip config list

参考资料:

文章大部分内容来自 Gemini

https://zhuanlan.zhihu.com/p/544089278

https://zhuanlan.zhihu.com/p/591638358

posted @ 2026-01-19 16:52  长江~之星  阅读(0)  评论(0)    收藏  举报