简单快速部署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 ...
随机推荐
- 浅谈vue性能优化
基础优化 所谓的基础优化是任何 web 项目都要做的,并且是问题的根源.HTML,CSS,JS 是第一步要优化的点 分别对应到 .vue 文件内的,<template>,<style ...
- jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题
jsp 自定义标签解决jsp页面中int时间戳的时间格式化问题 之前在项目中根据需求,需要自定义标签,经过查询w3c文档,自己也踩了一些坑,特此记录自定义标签的步骤,下面就以我之前的一个例子中的定义一 ...
- Thymeleaf常用th标签
https://www.jianshu.com/p/f9ebd23e8da4 关键字 功能介绍 案例 th:id 替换id <input th:id="'xxx' + ${collec ...
- jQuery效果------隐藏hide()/显示show()
hide()和show() hide():隐藏文本. show():显示文本. 语法: $(selector).hide(speed,callback); $(selector).show(speed ...
- oo第二单元作业总结
oo第二单元博客总结 在第一单元求导结束后,迎来了第二单元的多线程电梯的问题,在本单元前两次作业中个人主要应用两个线程,采用“生产者-消费者”模式和共享数据变量的方式解决问题.在第三次作业中加入多个电 ...
- p12文件和mobileprovision文件
http://www.cnblogs.com/YouXianMing/p/3848188.html https://www.jianshu.com/p/73c430f468e8 https://blo ...
- qs.stringify和JSON.stringify()
var a = {name:'hehe',age:10}; qs.stringify(a) // 'name=hehe&age=10' JSON.stringify(a) // '{" ...
- 两个ArrayList之间求交并补
class ArraylistCalculate{ // 两个整数集求差集 public ArrayList<Integer> integerArrayListDifference( Ar ...
- Python request 在linux上持续并发发送HTTP请求遇到 Failed to establish a new connection: [Errno 11] Resource temporarily unavailable
并发数被限制 vim /etc/sysctl.conf 添加 net.ipv4.ip_local_port_range = 1024 65535 保存 /sbin/sysctl -p 让修改生效 ...
- 【QT】Pycharm add QT Desinger
1. https://www.cnblogs.com/dalanjing/p/6978373.html -m PyQt5.uic.pyuic $FileName$ -o $FileNameWitho ...