构建高效工作环境 | 安装篇:Docker 部署基于 Nexus 3 的本地 Maven 私有仓库
Posted mickjoust
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了构建高效工作环境 | 安装篇:Docker 部署基于 Nexus 3 的本地 Maven 私有仓库相关的知识,希望对你有一定的参考价值。
前言
Maven 作为管理 Java jar包的集大成之作,Java 程序员们对它是又爱又恨,你可以吐槽他不用他,但大多数人工作中一定少不了他。
Nexus 是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。早期一直是作为 Maven 管理 Java jar包的工具之一。虽然官方 Maven 中央仓库保存了很多包,但是我们还是喜欢搭建私服,原因就是——速!度!快!。国内也有很多“官方的”私服,比如,网易Maven仓库,阿里云Maven仓库等。
现在,听说,Nexus 3 除了支持Maven外,还支持更多类型包的管理,比如,Docker,npm,yum等。已经成为了DevOps提升效率的利器之一。
图片来自官网 Nexus Repository OSS
作为一个爱折腾爱死磕的Java程序猿,虽说没有什么机会维护超大型的Maven仓库,但是本地搭建一个私人的Maven仓库,还是可以的,而且无意中发现,是真的能极大的提升开发效率(“造小轮子”的工具),更是研究框架源码的好帮助手。本文重点介绍如何使用Docker快速构建Nexus,并发布自己的工具包。
效果图
先来看成果图,简单直观。
1.获取 Nexus 3
选取最新 Nexus 3 的 lastst 版本。
docker pull sonatype/nexus3
2.启动
docker run -d -p 8081:8081 \\
--privileged=true \\
--name nexus3 \\
--v `pwd`/nexus-data:/nexus-data \\
--restart=always \\
sonatype/nexus3
参数说明:
- -d :创建进程容器 。
- -p 8081:8081 :宿主机端口(对外访问端口):容器映射端口。
- –privileged=true :容器访问宿主机的多级目录时可能会权限不足,给 root 权限 。
- –name nexus3 :容器名,可任意设定。
- -v $PWD/nexus-data:/nexus-data :挂接卷,映射容器中的 nexus-data 到本地nexus-data 下。
方便以后查看相关数据。 - –restart=always :服务挂后(比如,电脑重启),自动重启 。
3.使用
稍等一会儿,在浏览器输入:
127.0.0.1:8081
就能看到成功启动后的页面了
点击最右侧 登录。
这时的密码放在admin.password文件,cat一下,注意,每次启动新容器,密码是不同的:
登录成功,点击向导,修改密码。
选择匿名也可以访问:
点击完成。
4.发布工具包
4.1 创建本地仓库
发包前,要先配置好仓库。
如图,按照1、2、3顺序选择,出现仓库类型界面:
这里我们选maven的三种,简单说
- group:一组maven仓库。比如官方maven+阿里maven+网易maven,可自行组合。
- hosted:一个本地的仓库。接下来我们要建的。
- proxy:代理远端的某个仓库,比如,可以代理到阿里maven去下载。
其它类型的包,也是相同意思。
接下来就是配置,其它都默认,除了红框内的更新策略,因为工具包要经常发布,所以要选允许重发布的策略。这点很重要。
4.2 配置POM
在IDE中修改pom.xml
<distributionManagement>
<repository>
<id>local-expr</id>
<url>http://127.0.0.1:8081/repository/local-expr/</url>
</repository>
</distributionManagement>
执行发布
mvn deploy
查看包是否上传成功。
到此,工具包就发布成功了
小结
总结一下,使用 Docker 安装 Nexus 3 非常方便,Nexus 3 的配置稍微麻烦一点,但是 Docker 的好处在于一键启停,使用特别方便。
为什么非得这么麻烦?
原因很简单,独立且解耦。
因为真实的开发中,jar包的引用并不是直接使用本地打进去的(本地打包其实有很多坑),更多的时候,大家偏爱在POM里引用依赖(因为简单),而一个稳定成熟的jar包,其实才是提升效率的最佳途径。
而且这个更加趋近于生产环境,因为运维组更希望是统一管理包,而不是每个项目都要引用自己的本地包,这样既不方便CI集成,也不方便管理上线包和权限控制。
以上是关于构建高效工作环境 | 安装篇:Docker 部署基于 Nexus 3 的本地 Maven 私有仓库的主要内容,如果未能解决你的问题,请参考以下文章
构建高效工作环境 | Shell 命令篇:curl & ab 命令使用