简单快速部署nexus3私服
本文适用范围:用户规模不大,不需要考虑maven仓库负载均衡的群体。
为何部署nexus3
之前由于懒某些原因,所有开发人员自己定义.m2的settings,大多使用ali提供的maven仓库,但是最近发现这样做有一定的问题:
1、有几天aliyun的服务不大稳定,不管是maven仓库还是alidns都连不上;
2、如果换回maven central下载jar包会偏慢;
3、即使aliyun服务稳定,但是有些jar包没有,如果单纯把本地central改为aliyun服务会导致有些pom文件中的依赖下载不了;
当然,上述3点其实也还好,毕竟换回central只是慢了点而已- -虽然是每个人都慢了点。
但是最近有个需求还挺明显的:我们这有一些自己编写自己用的基础库,这类基础库还会经常更新,现在有个工程需要引用这些包。把jar包加到新工程并用git同步的话每次更新都要打jar包并且拷到新工程下,不好区分jar包版本,其次是如果使用windows的eclipse开发工程,更新jar包会出问题,eclipse打开时会把依赖的jar打开,此时更新jar包会失败。而且失败后有时会出现奇怪的git问题。
所以决定部署nexus3,优点很明显,通过统一的本地服务器下载jar包,多人开发不会重复下载,一是降低central压力二是节约下载jar包时间;服务稳定,自己的服务器总不能说连不上就连不上了,就算外网崩了只要服务器上有jar包maven服务就依旧可用;可以自定义jar包了!不用每次还得把自己的基础库pom文件内容拷贝到新工程了,引用自己的基础库dependencies里就会把依赖的所有jar包都加进来,而且不用担心windows用eclipse开发git同步代码时报错。
超快速部署nexus3
emmmmm.....思考了一下,直接拉docker镜像显而易见是最简单的部署方式,性能足够,不会修改本地环境,并且这样做还有一个好处是如果以后需要进行负载均衡可以较为方便的迁移到k8s上。那么开始:
dockerhub官方镜像:https://hub.docker.com/r/sonatype/nexus3/
拉取命令:
见https://www.cnblogs.com/gaoze/p/10784961.html,此镜像在我这里被植入了挖矿程序,本人从来未exec -it或者使用其他命令修改此镜像创建的container,只是从mvn repositories中加入了热门的仓库站,并添加了个用户,这样还出问题很难相信不是image的问题。现在建议通过本博客提供的自建image方式自己创建maven仓库。
执行命令:
$ docker volume create --name nexus-data
$ docker run -d -p 8081:8081 --name nexus -v nexus-data:/nexus-data my-nexus3
等待10分钟,部署完成!
事实证明,通过官方下载的tar包部署的nexus3私服根本不需要这么久时间进行部署,仅仅需要约半分钟即可部署完成,系统启动状态可以通过docker logs containerID来查看,官方提供的版本约半分钟即可started。
解释与说明
上面确实是部署完成了,但是总要说一下注意事项和为什么这样就部署完成了:
首先拉个镜像回来,然后我们创建了一个volume,这个相当于底层存储,这样做的好处是即使我们的nexus container某些原因坏掉了,但是我们的的底层数据:如曾经下过的jar包和pom文件,nexus组件升级补丁啥都都还在。重新用image创建一个container继续挂载在此文件夹下就ok了。
然后说为啥要等个10分钟,这是有原因的,nexus启动后会检测nexus component版本,然后进行升级,在升级过程中如果被打断会出bug,例如我自己部署的时候习惯先不加-d(总觉得并不能一次部署成功),等了几分钟看差不多时ctrl+c打断掉再创建一个-d的container正式运行,但是由于我们存储挂载在volume上的,未完成的升级也在那个文件夹下,所以部署的时候还是会报错,找了好久问题发现应该删掉volume重新建一个空白的,加载空白volume就一切正常了。
nexus3配置
这步其实还挺重要的,我们一点一点来看,首先登陆系统界面:IP:8081,点击上面的设置按钮(那个齿轮)

点击repositories

可以看到这是我的一个仓库页面,里面除了一些默认的仓库以外,额外添加了许多新仓库:
先说本地仓库:
maven-releases:管理本地jar包的东西,release版,需要上传自己的jar包时release上传到这个仓库。
maven-snapshots:管理本地jar包的东西,snapshot版,需要上传自己的jar包时snapshot上传到这个仓库。
maven-public:可以用来整合多个仓库源,在.m2/中的settings可以把central源设置成这个玩意。
maven-central:看起来是central其实并不是我们常用的那个central,所以我又加了一个central源代表真正的central。
知道这几个默认仓库有啥用了并不能真正进行使用,我们还需要加入其他源,不然有些jar包找不到,照着下面设置就行,version policy不知道选啥就用release,需要用snapshot选mixed:

至于加入哪些源,建议把如下都加上,如果觉得再加个国内的那就再加个ali的:

然后选择maven-public,在里面的group项内把创建好的所有源都拖到group里,然后看心情调整一下顺序就可以了。访问时在.m2/文件中把central源改为public这个即可,如:
<mirrors>
<mirror>
<id>nexus</id>
<name>private maven</name>
<url>http://192.168.xxx.xxx:18081/repository/maven-public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
简单快速部署nexus3私服的更多相关文章
- 简单快速部署samba服务器
samba是一种在linux环境运行的免费软件,可以为局域网内的不同计算机系统之间提供文件以及打印机等资源的共享服务. samba服务安装和配置: 1.安装gcc编译器以及samba服务和samba依 ...
- 快速部署简单私有云CloudStack(上)
前言: 亲身用了大半年,没出过重大毛病,也就是服务挂了,跟服务器也没啥关系.如果想更深入学习cloudstack可以试试高级网络,我是一直用的简单网络(扁平网络). 由来:CloudStack的前身是 ...
- ios-实现项目在开发、测试、正式环境快速部署
快速部署:简单的来说,就是不用更改开发.测试.正式环境下的 url ,来实现在同一台测试手机快速部署三种项目状态. Bundle ID一样只会出现一个app:不一样会出现三个app: 具体步骤: 一. ...
- 使用VMDepot镜像快速部署CKAN开放数据门户
最新发布的CKAN VMDepot镜像针对中国用户强化了中文支持,提升了与MS Office办公软件的互操作性,并集成了常用插件和最佳实践配置参数. 使得CKAN原本十分复杂繁琐的部署流程变得非常简单 ...
- 使用Ambari快速部署Hadoop大数据环境
使用Ambari快速部署Hadoop大数据环境 发布于2013-5-24 前言 做大数据相关的后端开发工作一年多来,随着Hadoop社区的不断发展,也在不断尝试新的东西,本文着重来讲解下Amb ...
- 如何快速部署国人开源的 Java 博客系统 Tale
除了闷头专研技术之外,程序员还需要不断地写作进行技术积累,写博客是其中最重要的方式之一.商业博客平台不少,但是更符合程序员背景的方案,是自己开发一个博客平台或者使用开源的博客平台. 开源的博客平台多如 ...
- Hexo快速部署教程
一直有建立博客的需要,使用过Wordpress动态博客,一直访问速度比较慢,刚开始以为是空间域名的解析的问题,尝试使用Hexo静态博客,部署后感觉速度正常很多,特意发文快速部署教程 准备 本文是在wi ...
- 【技术解析】如何用Docker实现SequoiaDB集群的快速部署
1. 背景 以Docker和Rocket为代表的容器技术现在正变得越来越流行,它改变着公司和用户创建.发布.运行分布式应用的方式,在未来5年将给云计算行业带来它应有的价值.它的诱人之处在于: 1)资源 ...
- Centos7下使用Ceph-deploy快速部署Ceph分布式存储-操作记录
之前已详细介绍了Ceph分布式存储基础知识,下面简单记录下Centos7使用Ceph-deploy快速部署Ceph环境: 1)基本环境 192.168.10.220 ceph-admin(ceph-d ...
随机推荐
- css实现连续数字和英文的自动换行的方法
1.(IE浏览器)连续的英文字符和阿拉伯数字,使用word-wrap : break-word ;或者word-break:break-all;实现强制断行 #wrap{word-break:brea ...
- [LeetCode] Custom Sort String 自定义排序的字符串
S and T are strings composed of lowercase letters. In S, no letter occurs more than once. S was sort ...
- [LeetCode] Jewels and Stones 珠宝和石头
You're given strings J representing the types of stones that are jewels, and S representing the ston ...
- linux学习:wget与lynx用法整理
指令:wget.lynx.axel wget url #下载数据写入文件,下载的文件名与url中的文件名保持一致,下载信息或进度写入stdoutwget url1 url2 url3 #下载多 ...
- 全排列筛选(java)
蓝桥杯-全排列筛选(java) 蓝桥杯每年必考全排列筛选,一般为填空题: 可以使用for循环暴力破解,但是代码相对较长,也比较乱,不建议使用: 这里使用递归来解决,代码量相对较少,也很好理解: 如下为 ...
- 关于eclipse的Progress一直跳转的解决方案
下载eclipse编程,发现了一个问题:执行main方法第二次console打印不出数据,后发现Progress一直跳转,而且非常多进度条在运行,关闭后第一次执行没问题,第二次问题重复出现. 有幸看到 ...
- Java是如何加载资源文件的?(源码解毒)
上文提到应老板要求开发一个测试工具能方便的加载存于文件中的测试参数,当时考虑既然是测试,把测试参数文件和测试类放在一起岂不是很方便,但是老板说:我的需求是你把测试参数文件放到统一文件夹下比如resou ...
- F#周报2019年第12期
新闻 Amazon.Lambda.RuntimeSupport发布 Forge 3.0架构 Blazor 0.9.0试验版发布 通过微软游戏栈实现更多应用 介绍ASP.NET Core中的gRPC M ...
- new image()
在js中 新建一个new image()对象,image.src图片地址,这个是io读取是异步的,解决方法 image.onload=function(){ }
- oracle_创建表空间_临时表空间_修改表空间_以及自增长
管理员用户登录oracle数据库 [oracle@DBORACLE ~]$ sqlplus / as sysdba SQL*Plus: Release 11.2.0.4.0 Production on ...