一、Nexus是什么?能干什么?
#nexus施舍么?
Nexus 跟 Harbor 一样都是“仓库”,但 Nexus 更偏语言包/构件(Maven、npm、PyPI…),Harbor 更偏 Docker/OCI 镜像。
作为运维,一般会用 Nexus 来做:Maven 私服、npm 私服、Python 包、甚至 Docker / Helm 仓库。#能干什么?
- 加速依赖下载(代理公网仓库 + 本地缓存)
- 私有包托管(比如你们内部的 Java 包、npm 私有库)
- 统一出口(所有构建机器都从 Nexus 下载依赖,方便管控和审计)
- 配合 CI/CD:构建产物统一上传 Nexus,后续部署环境只从 Nexus 拉。二、Nexus 里的核心概念
2.1 三种仓库类型(很重要)
不管是 Maven、npm 还是 Docker,Nexus 里都只有三类仓库:
1、Hosted(宿主仓库 / 私有仓库)
- 放你们自己发布的包。
- 比如:maven-releases、npm-private、docker-private。
2、Proxy(代理仓库)
- 代理公网源,并把下载的东西缓存在本地。
- 比如:
- aven-central 代理 https://repo.maven.apache.org/maven2
- npm-proxy 代理 https://registry.npmjs.org
- docker-hub 代理 https://registry-1.docker.io
3、Group(聚合仓库)
- 把若干 Hosted + Proxy 打包成一个虚拟仓库,对外只暴露一个地址。
- 比如:maven-public = maven-releases + maven-snapshots + maven-central
- 开发/CI 只配 maven-public,不用管具体后端有多少仓库。2.2 格式(Format)
创建仓库时要选择 格式,比如:
- maven2、npm、pypi、docker、helm 等。
- 格式决定了:URL 路径结构、客户端怎么访问、支持哪些功能。
2.3 Blob Store(存储)
- Nexus 会把真实的文件放在叫 Blob store 的路径里(默认在 /nexus-data 下面)。
- 一般建议:
- 如果是k8s建议用独立磁盘或 PV
- 大一点,后面所有包/镜像都在里面。
- 我这里是使用docker单独部署 挂载建议内存和磁盘空间给多一些
root@ubuntu:/work/nexus# cat docker-compose.yml
version: '3.8'
services:
nexus:
image: sonatype/nexus3
container_name: nexus
restart: always
ports:
- "8081:8081"
volumes:
- ./nexus-data:/nexus-data
# 如有需要可以限制内存,比如:
# deploy:
# resources:
# limits:
# memory: 4g
2.4 用户、角色、Realm
- 用户 / 角色 / 权限:可以控制谁能读、谁能发包。
- 如果接 LDAP/AD,就在 Security -> Realms 里启用对应 Realm。三、怎么部署 Nexus(最常用:Docker)
- 说明:
- Web UI 默认是 http://<服务器IP>:8081
- 数据都在 /data/nexus-data(持久化很关键,别丢)
- 初始 admin 密码在 /nexus-data/admin.password 文件里。
- 生产环境建议:
- 做反向代理(Nginx / Ingress)
- 配置 HTTPS
- 定期备份 /nexus-data。
root@ubuntu:/work/nexus# cat docker-compose.yml
version: '3.8'
services:
nexus:
image: sonatype/nexus3
container_name: nexus
restart: always
ports:
- "8081:8081"
volumes:
- ./nexus-data:/nexus-data
# 如有需要可以限制内存,比如:
# deploy:
# resources:
# limits:
# memory: 4g
评论 (0)