构建高效工作环境 | 安装篇: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 命令使用

构建高效工作环境 | Shell 命令篇:curl & ab 命令使用

centos7下的docker的安装

k8s与docker与大数据环境的构建工作

docker 基本学习

docker部署springboot