Nexus 的安装其实只要一分钟,但是配置确实要费点功夫,本文重点就是如何配置的:
一、安装:
# nexus的启动用户居然是200:200
mkdir -p /app/nexus/data
chown -R 200:200 /app/nexus/data
cd /app/nexus
cat > docker-compose.yaml <<EOF
services:
nexus:
image: sonatype/nexus3:latest
container_name: nexus
restart: always
ports:
- "8081:8081"
volumes:
- /app/nexus/data:/nexus-data
EOF
docker compose up -d
# 拿到admin管理员密码
docker exec -it nexus cat /nexus-data/admin.password
二、配置仓库:
首先需要了解一个概念,hosted、proxy、group,仓有三个类型:

- hosted 这里是私仓,自己产生的包和library可以放进去
- proxy 这是指代理网络上公开的仓库
- gropu 这里只把上面两个合并起来,暴漏出去
这样就完美了,既可以放私有的包,还能代理公共的包,最后合并成组后还能起个好记的名字暴露出去
那我们要建立一个pypi的仓,顺手就建立三个:

其中pypi-proxy代理的公仓地址:https://pypi.org/
那就欧克了。
下一步必须进行权限管控:
首先加Role
Role ID: private-repo-developer
Role Name: Private Repository Developer
Role Description: Can read and upload Maven and PyPI packages
那接着选权限:
搜索:nx-repository-view-pypi
那这里就看到这个倔强的命名规则有多难受了!
如果我们起名的时候是 pypi-proxy pypi-hosted,那这里就是 nx-repository-view-pypi-pypi-proxy和nx-repository-view-pypi-pypi-hosted
看着太恶心了,如果不加pypi-前缀,那像下面的一样,必须看到后面字段才会知道是什么类型,也是无语

那对于hosted的私仓,我们要选中 add、edit、read、browse的4项权限

而对于proxy和group的仓,有browse和read权限就可以了

然后加User
ID:devuser
First name:Pypi
Last name:Deploy
Email:pypi_deploy@example.com
Status:Active
Roles:Private Repository Developer

弄完之后务必要对三个仓有清晰的认知:
# 上传,注意repository后面是pypi-hosted的私仓名
repository = http://10.8.2.9:8081/repository/pypi-hosted/
username = devuser
password = xxxxxxxx
# 安装,注意repository后面是私仓和公仓的合并group名pypi
pip install requests \
--index-url http://devuser:xxxxxxxx@10.8.2.9:8081/repository/pypi/simple