Nexus是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven、npm、Docker、YUM、Helm等格式数据的存储和发布;并且能够与Jekins、SonaQube和Eclipse等工具进行集成。
Nexus支持作为宿主和代理存储库的本地Maven/Docker存储库,可以直接将这些存储库暴露给客户端工具;也可以以存储库组的方式暴露给客户端工具,存储库组是合并了多个存储库的内容的存储库,能够通过一个URL将多个存储库暴露给客户端工具,从而便于用户的使用。通过nexus自建能够有效减少访问获取镜像的时间和对带宽使用,并能够通过自有的镜像仓库共享企业自己的镜像。
SSL证书
需要 2 个域名,一个用来代理 Nexus
管理面板,另一个用做 docker
仓库,docker
需要单独的端口
Nexus 前台:registry.jonty.top
Docker 仓库:hub.jonty.top
自签名证书
我们通过Nginx
代理Nexus
服务,需要先生成自签名的SSL证书,通过内部DNS域名访问(无需在docker pull
的时候还要带一个端口)
使用一键生成工具:ssl,两个域名都要签发证书
PS:如果是打算做外网仓库服务,可以直接申请一个免费的SSL证书(云厂商都提供),本文使用内网域名,使用自签名证书
阿里云签发
如果有域名,可以购买Aliyun
免费ssl证书,一年有效期,可以有效避免自签名证书不适用的问题
申请完成后,下载Nginx
证书并上传到服务器
本地域名解析
Windows:C:\Windows\System32\drivers\etc\hosts
Linux:vi /etc/hosts
将以下解析加入,测试是否可以ping
通
服务端和客户端都需要配置
部署
环境准备
安装Docker-Engine
创建数据路径并设置权限
将生成的证书复制到$PWD/nexus3/certs
目录下(2个域名的证书都需要)
docker-compose.yml
在~/nexus3
目录下
nginx.conf
在同目录下创建nginx.conf
,nginx
配置文件
请参考ssl
查看目录
运行
Nexus初始化需要3~5min,初始化完成后可访问
使用
密码配置
查看admin
默认密码:
Docker存储库
创建Blob存储
创建用于存放docker
镜像文件的存储区域
创建存储库
存储库有以下三种类型:
-
proxy:表示代理仓库,请求包(package)的时候,如果本地有,它就从本地提供,如果本地没有,则从代理地址下载到本地,然后提供这个包。
-
hosted:表示托管仓库,一般用于推送开发的包到该仓库。
-
group:表示仓库组,它结合了proxy和hosted,能对外提供上述两者中的包,对外的出口
hosted:本地仓库
创建hosted
类型,用于存储本地推送的镜像
端口设置为8083
,对应nginx.conf
配置nexus_docker_put
proxy :代理仓库
代理官方源:https://registry-1.docker.io
代理阿里云私有仓库(可公开拉取):
如果代理的私有库需要授权:
group : 仓库组
端口设置为8082
,对应nginx.conf
配置nexus_docker_get
编辑组成员,根据顺序可排优先级
上传docker镜像
配置授信
使用自签名证书需要配置此步骤
加入以下配置
重启docker
docker登录私库时提示
x509: certificate signed by unknown authority
登录
推送镜像
拉取镜像
Gitlab-CI
CI配置:
设置匿名拉取
按需开启,开启则不需要配置以上授信部分
NuGet存储库
上传nuget包
Nexus默认已经创建好了Nuget的仓库,并且是创建了3个不同类型的仓库:nuget-group,nuget-hosted,nuget.org-proxy
添加Nuget Realms
Nexus认证Nuget是通过Realms来认证
获取仓库地址以及Nuget API Key
仓库列表>复制地址
获取NuGet API Key
推送本地NuGet包
配置本地NuGet包源
在VS中添加了本地源
新增Nuget代理
代理公网的私有源,如Nuget、Gitlab
启用NuGet V3版本
添加仓库组
NuGet V3
正常访问nuget-group:
使用V3版本需要添加
使用私有NuGet源
如果是代理私有库,先删除本地源
添加私有源
清空本地nuget缓存
当代理的源更新后,Nexus本地缓存会导致无法找到最新包,可手动清理
NPM存储库
NPM代理
官方源:
私有库授权:
NPM仓库组
使用NPM代理
配置代理
npm 新版本
-g
需要替换为--location=global
查看密钥
查看私服密钥
.npmrc
DevOps
目的
主要是配合Gitlab Runner CI/CD
编译打包
效果
后端项目从平均12min
提升到3min
以内,包括拉取代码、执行还原、编译打包、推送等操作
前端项目从平均大于10min(30min也很常见)提升到7min以内,restore
速度很快,主要是build
操作缓慢,并且随着依赖增多变得更慢
使用前
使用后
搞定~
其他问题
502 Bad Gateway
配置 nexus3 时使用 http 而非 https
no basic auth credentials
需要先 docker login 登录
401 Unauthorized
docker login -u admin -p Harbor12345 hub.haifengat.com 登录时报错
参考文档:
docker登录私库时提示 x509: certificate signed by unknown authority_舟行于无涯之海的博客-CSDN博客_docker login x509
__EOF__
本文链接:https://www.cnblogs.com/JontyWang/p/docker-nexus3-build-private-repository.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!