仓库管理软件-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. 环境准备
确保你的内网服务器已经安装了 Docker 和 Docker 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 界面
- 访问:
http://服务器IP:8081。 - 点击右上角 Sign in,用户名:
admin,密码为刚才查看到的字符串。 - 按照向导修改密码,并选择 Enable anonymous access(允许内网匿名下载,提高一键安装的体验)。
第三步:创建 PyPI 仓库
- 点击顶部 齿轮(Settings) -> Repositories -> Create repository。
- 选择 pypi (hosted) 类型(这是用来存放你从外网迁移进来的包)。
- 命名为
pypi-internal,其他默认。 - 点击 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

浙公网安备 33010602011771号