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,仓有三个类型:

image-20260603112412546

  • hosted 这里是私仓,自己产生的包和library可以放进去
  • proxy 这是指代理网络上公开的仓库
  • gropu 这里只把上面两个合并起来,暴漏出去

这样就完美了,既可以放私有的包,还能代理公共的包,最后合并成组后还能起个好记的名字暴露出去

那我们要建立一个pypi的仓,顺手就建立三个:

image-20260603112801491

其中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-前缀,那像下面的一样,必须看到后面字段才会知道是什么类型,也是无语

image-20260603113528161

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

image-20260603113731675

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

image-20260603113837653

然后加User

ID:devuser

First name:Pypi

Last name:Deploy

Email:pypi_deploy@example.com

Status:Active

Roles:Private Repository Developer

image-20260603113947631

弄完之后务必要对三个仓有清晰的认知:

# 上传,注意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