部署Nexus用于maven、docker registry、go等本地仓库

Posted by

(施工中!!!!!!!!!!!!!!!!!!!!!!!!!!!!)

本文将搭建一个Nexus私服,用于各种开发语言的本地仓库

搭建一个Nexus的目的

  • 能够建立一个支持maven、docker registry、go、nuget、npm等等的本地仓库
  • 用于代理远程的各种中央库
  • 支持未来本地部署的CICD
  • 这篇文章覆盖的仓库类型
    • maven
    • ==go
    • ==docker registry
    • nuget
    • npm
  • 同时这篇文章将会跟cicd相关文章联动,用来支持本地开发部署的仓库存储。这包括:
    • 测试版本
    • 生产版本
    • 环境隔离与同步

使用的环境:

  • 群晖DS1921+ 虚拟机环境 1core/4G/100G系统盘/500G数据盘
  • 操作系统:windows server 2019
  • 采用windows的原因是,不想过多的关心操作系统环境的配置细节,尽可能快速搭建一个nexus私服
  • 虚拟机IP配置: 192.168.31.205

一、环境准备

下载nexus

从nexus的官网 https://www.sonatype.com/products/repository-oss-download 下载nexus开源版

得到文件:nexus-3.37.0-01-win64.zip

这个文件中已经包含了jre环境,可以不用安装jdk在操作系统中。这是相当便利了

安装windows server 2019环境

在群晖虚拟机中安装windows server 2019操作系统

同时命名为: softwarelifecycle

官方安装文档

请参考这里 https://help.sonatype.com/repomanager3/installation-and-upgrades

其他

TBD

 

二、安装步骤

解压文件

解压nexus-3.37.0-01-win64.zip到D盘nexus目录下

参数配置

vm参数

在启动之前,可以进行相关的配置

配置文件在: $install-dir/bin/nexus.vmoptions

主要需要修改的是内存、数据存储路径等

这里保持默认,因此就不做任何修改。

其他配置

关于诸如http端口等信息,可以修改: $data-dir/etc/nexus.properties

这里修改这个文件,更改默认端口8081到8091

配置开机启动

安装开机服务  $install-dir/bin/nexus.exe /install softwarelifecycle_nexus

卸载开机服务  $install-dir/bin/nexus.exe /uninstall softwarelifecycle_nexus

配置防火墙

在windows防火墙中,增加一个入站规则

规则允许如下端口进行访问

  • 8091端口 – nexus
  • 8092端口 – docker registry

登录管理页面

使用浏览器访问 http://192.168.31.205:8091

首次登录管理员账号,账号admin 密码在$data-dir/admin.password 文件里

会提示进行管理员密码修改、是否允许匿名访问等。

 

三、开启仓库支持

A. go

代理仓库(从上游库中同步+代理)

(这里使用goproxy.cn提供的代理服务作为源)

在Repository->Repositories中选择Create Repository

在弹出的类型中选择 go(proxy) 来新建一个go仓库的proxy

在之后的页面中填写:

  • name: goproxy.cn
  • remote storage: https://goproxy.cn
  • maximum component age: -1   永久保存
  • maximum metadata age: -1   永久保存

点击create repository进行保存

然后在Repositories页面选择copy对应创建出来的go仓库的地址,即 http://192.168.31.205:8091/repository/goproxy.cn/

客户端配置

在本地执行

go env -w GO111MODULE=on
go env -w GOPROXY=http://192.168.31.205:8091/repository/goproxy.cn/,direct
go env -w GOSUMDB=”sum.golang.org https://goproxy.cn/sumdb/sum.golang.org”

之后就可以使用go mod进行下载了

本地仓库

TBD

B. Docker registry

代理registry

(参考 https://www.orchome.com/2022)

在 Security > Realms 下将 “Docker Bearer Token Realm” 开启并调高优先级

在 Security > Roles 下 Create Role,ID和name命名为nx-dockerread,并加入如下权限:

  • nx-repository-view-docker-*-browse
  • nx-repository-view-docker-*-read

在 Security > Users 下 编辑anonymous 账户,增加权限nx-dockerread

在Repository->Repositories中选择Create Repository

在弹出的类型中选择 docker(proxy) 来新建一个docker仓库的proxy

在之后的页面中填写:

  • name: dockerproxy
  • 启用HTTP,并填写端口8092
  • 勾选allow anonymous docker pull
  • 启用docker v1 API
  • remote storage: https://docker.mirrors.ustc.edu.cn/
  • maximum component age: -1   永久保存
  • maximum metadata age: -1   永久保存

点击create repository进行保存

然后在Repositories页面选择copy对应创建出来的docker仓库的地址,即 http://192.168.31.205:8091/repository/dockerproxy/

客户端配置

之后修改本地docker配置文件/etc/docker/daemon.json

改成 “insecure-registries” : [“192.168.31.205:8092”]

如果启用了https的endpoint,那么可以使用 “registry-mirrors”: [“http://192.168.31.205:8092”]

详情参见: 迷你服务器集群环境系列(2)——虚拟机安装配置

本地仓库

TBD

 

Leave a Reply