Centos使用docker搭建Nexus内网仓库

 前言

  Nuget是ASP .NET Gallery的一员,是免费、开源的包管理工具,专注于在.Net / .Net Core应用开发过程中第三方组件库的管理,相对于传统单纯的dll引用要方便、科学得多。其中nuget.org是最著名的Nuget公开库,但是企业内部开发的(业务)公共组件不可能都往公开库上传,所以,企业内部需要一个私有的Nuget仓库来支持。虽然微软有提供的Nuget Server,但Nuget Server用起来并不那么顺手,或者说感觉有点low。因此,本文将介绍Nexus搭建的Nuget仓库,希望能给大家多一个选择。

 

安装步骤

安装环境

Centos 7+, docker

1. 安装docker

如果已安装的docker,可跳过此步骤。

# 更新服务器上所有的包

yum update

# 更新docker包

yum install -y docker

# 关闭开机启动(docker)

systemctl enable docker

#开启开机启动(docker)

systemctl start docker

 Centos使用docker搭建Nexus内网仓库 

2. 拉取Nexus的镜像

补充说明:

因为在下载官方镜像点的镜像国内访问速度太慢,所以报错,使用加速器就可以解决这个问题【备注:更换镜像源

首先打开配置文件daemon.json,centos上安装后有此文件,但是ubuntu上需要自己创建文件: 

# 编辑 daemon.json
vim /etc/docker/daemon.json

在文件中加入:

{    "registry-mirrors":["https://docker.mirrors.ustc.edu.cn", "https://9cpn8tt6.mirror.aliyuncs.com"]}

然后重启守护进程:

# 重载所有修改过的配置文件

sudo systemctl daemon-reload

# 重启docker

sudo systemctl restart docker

# 拉取镜像

docker pull sonatype/nexus3:3.25.1

Centos使用docker搭建Nexus内网仓库

镜像详细说明:https://hub.docker.com/r/sonatype/nexus3/

 

3. 运行Nexus并把数据持久化到服务器

# 数据持久化

mkdir /opt/nexus && chown -R 200 /opt/nexus

# 运行Nexus

docker run -d -p 8081:8081 --name nexus -v /opt/nexus:/nexus-data sonatype/nexus3:3.25.1

Centos使用docker搭建Nexus内网仓库

 

稍等片刻,可能是几分钟,通过http://serverip:8081就能访问Nexus了。

 Centos使用docker搭建Nexus内网仓库

 

 

Nexus说明

1. 默认帐号

Nexus的默认管理员帐号:admin,密码:admin123。点击界面右上角可以登录。

3.17版本之后的Nexus默认密码在配置文件里面/nexus-data/admin.password

因为是docker安装

#查询容器id

docker ps

#进入容器里面(补充:进入容器里面相当于从新进了一个系统,独立的系统)

docker exec -it 容器id bash

Centos使用docker搭建Nexus内网仓库

 

找到admin.password文件,默认位置在

# 这个就是密码,没有加密,直接使用登录就行

vi /opt/sonatype/sonatype-work/nexus3/admin.password

 Centos使用docker搭建Nexus内网仓库

登录完后,可以看到一个设置按钮:

 Centos使用docker搭建Nexus内网仓库

 

点击Repositories,查看内置的默认仓库:

 Centos使用docker搭建Nexus内网仓库

 

2. 仓库说明

  其实Nexus默认已经创建好了Nuget的仓库,并且是创建了3个不同类型的仓库:nuget-group,nuget-hosted,nuget.org-proxy。

a. nuget.org-proxy

  类型是proxy,表示代理仓库。我们向它请求包(package)的时候,如果本地有,它就从本地提供,如果本地没有,它会从nuget.org下载到本地,然后给我提供这个包。

b. nuget-hosted

  类型是hosted,表示托管仓库。我们一般把自己开发的包上传到该仓库中。

c. nuget-group

  类型是group,表示仓库组,它结合了nuget.org-proxy和nuget-hosted,能对外提供上述两者中的包。

  简而言之,nuget-hosted负责包上传,nuget.org-proxy负责代理包,nuget-group负责提供包。

 

d. maven2(group) 聚合仓库

将多个宿主仓库聚合到同一个group中,使用中统一指定聚合仓库的仓库地址可以获取到同一group下的所有包,免去多仓库多地址的配置繁琐。

聚合仓库的聚合成员可以在仓库设置中添加和移除。

e. maven2(hosted) 宿主仓库

平常使用的仓库,不多说明。需要注意的是宿主仓库有两种日常开发可以使用到的类型。

  • release

release 仓库不能重复上传同一版本号,版本不能覆盖,只能迭代,所以开发的稳定版本可以统一放置在release仓库中。

  • snapshot

snapshot 仓库允许版本覆盖,当多次上传同一个版本到 snapshot 仓库,会自动在版本号上添加时间戳来区分。建议在开发测试时使用。

f. maven2(proxy) 远程代理仓库

这种类型的仓库,可以设置一个远程仓库的链接。当用户向 proxy 类型仓库请求下载一个依赖构件时,就会先在自己的库里查找,如果找不到的话,就会从设置的远程仓库下载到自己的库里,然后返回给用户,相当于起到一个中转的作用。

 

后续遇到的问题:

https://www.cnblogs.com/Huanggang-like/articles/14841878.html

上一篇:[经验分享]如何发布NuGet包


下一篇:2021-06-05