“Sonatype Nexus Repository” 通常被称作为 Nexus , 是由 Sonatype 出品的目前世界上最流行的仓库管理软件。仓库管理的主要的目的,是存储源代码编译之后的成果物,并对其进行版本管理,以便为开发提供稳定的依赖来源。
Nexus 目前提供两个版本,Nexus2 和 Nexus3 。Nexus2主要只用来管理maven,而Nexus3默认支持了maven、docker、npm、yum、apt等多种仓库的配置。今天主要以 Nexus3 为例介绍。
一、作用
很多第三方会提供官方仓库,不过大部分的公司都会选择自建仓库。主要是为了解决以下开发痛点:
需要存储和管理私有包
官方仓库访问缓慢且占用外部带宽
官方仓库的包可能随着官方升级和维护而删除或更换地址
二、安装
2.1 Docker Compose 示例
docker-compose.yml 文件
networks:
1panel-network:
external: true
services:
nexus:
# 容器运行的镜像
image: registry.cn-shenzhen.aliyuncs.com/zhangqintech/nexus3:3.72.0
# 自定义容器名称
container_name: ${CONTAINER_NAME}
# 添加环境变量
environment:
TZ: Asia/Shanghai
# 容器总是重新启动
restart: always
# 端口映射
ports:
- 18081:8081
# 配置容器连接的网络
networks:
- 1panel-network
# 以 root 用户身份运行容器
user: root
# 将主机的数据卷或着文件挂载到容器里
volumes:
- "/mydata/volumes/nexus/data:/nexus-data"
# 部署配置
deploy:
# 资源配置
resources:
limits:
cpus: ${CPU_LIMIT}
memory: ${MEMORY_LIMIT}
.env 文件
CONTAINER_NAME="cicd-nexus"
CPU_LIMIT=0
MEMORY_LIMIT=0
2.2 管理员账号密码
默认管理员账号:admin
默认管理员密码:进入容器后查询 /nexus-data/admin.password 文件
三、常规配置
3.1 谨慎开启匿名访问
四、仓库分类
仓库按照类型区分,可以分为三种:代理仓库(Proxy)、宿主仓库(Hosted)、仓库组(Group)。
4.1 代理仓库(Proxy)
当PC访问中央仓库的时候,先通过Proxy下载到Nexus仓库,然后再从Nexus仓库下载到PC本地。
这样的就可以大大节约外部宽带,只要其中一个人从中央仓库下来了,以后大家都是从Nexus仓库上进行下载。
4.2 宿主仓库(Hosted)
用于将第三方的包或者我们自己的包,放到自己的Nexus仓库上。
4.3 仓库组(Group)
能把多个仓库合成一个仓库来使用。把上几步创建的代理仓库和宿主仓库都加入到同一仓库组中,这样可以让仓库同时支持代理和自己上传。