利用Docker创建自己团队的maven仓库

一、前言

相信国内的小伙伴都经历过,Gradle、Maven、NPM下拉速度过慢的情况。我们一般的做法是配置阿里云这样的中央仓库。加速问题是可以采用这种方式解决,但如果是团队内部的库想进行上传分发,传到Maven Central这种共用的Maven仓库就不太合适了。那样保密性和时效性都将收到破坏。所以在团队内部,我们一般都会搭建局域网内私有的中央仓库。支撑这种私有仓库的软件就是Nexus,本文将详细介绍如何从零搭建、上传库、下拉库整个使用过程。

二、利用Docker搭建

查看镜像

docker search nexus3

拉取镜像

docker pull sonatype/nexus3

查看镜像

[root@localhost nexus-data]# docker images
REPOSITORY        TAG       IMAGE ID       CREATED       SIZE
sonatype/nexus3   latest    3aa3f8a8fff7   2 weeks ago   668MB

服务器创建映射地址

mkdir -p /usr/local/nexus3/nexus-data

创建容器

docker run -id --privileged=true --name=nexus3 --restart=always -p 8081:8081 -v /usr/local/nexus3/nexus-data:/var/nexus-data sonatype/nexus3

查看容器

[root@localhost ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                PORTS                                                               NAMES
ad55669b14ce        sonatype/nexus3     "/opt/sonatype/nex..."   6 hours ago         Up 6 hours            0.0.0.0:8081->8081/tcp                                              nexus3

浏览器输入地址访问

如果是在本地搭建

http://localhost:8081/

如果是在云服务器搭建

最好开一下安全组和端口

开启端口的命令

firewall-cmd --permanent --add-port=8081/tcp

再继续访问

http://ip地址:8081/

出现这个页面就成功了

 这个是登录状态

如果没有登录需要登录

默认用户名为

admin

第一次登录需要去服务器查询密码

注意先使用查看容器id

docker ps

先运行容器 再进入文件夹里 查看admin.password中的密码

docker exec -it  ad55669b14ce bash
cd sonatype-work/nexus3
cat admin.password

​
[root@localhost ~]# docker exec -it ad55669b14ce bash
bash-4.4$ ls
nexus  sonatype-work  start-nexus-repository-manager.sh
bash-4.4$ cd sonatype-work/
bash-4.4$ ls
nexus3
bash-4.4$ cd nexus3
bash-4.4$ ls
blobs  cache  db  elasticsearch  etc  generated-bundles  instances  javaprefs  karaf.pid  keystores  lock  log	orient	port  restore-from-backup  tmp

​

之后就可以输入密码再登录就可以了。

三、配置默认源

搭建好后,会有一些默认的库

maven-central:maven 中央库,默认从 https://repo1.maven.org/maven2/ 拉取 jar
maven-releases:私库发行版 jar maven-snapshots:私库快照(调试版本)jar
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务

概念说明:

group:这是一个仓库聚合的概念,用户仓库地址选择 Group 的地址,即可访问 Group中配置的,用于方便开发人员自己设定的仓库。maven-public 就是一个 Group 类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x 默认为Releases、Snapshots、Central,当然你也可以自己设置。
hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的 jar 文件 snapshots:本地项目的快照仓库
releases: 本地项目发布的正式版本
proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration 页签下 Remote Storage 属性的值即被代理的远程仓库的路径),如可配置阿里云 maven 仓库
central:中央仓库

 3.1 配置加速库

我们通过上文了解到,Nexus默认会从maven.org拉取我们需要的公共库。我们需要配置一个阿里云的加速库,这样凡是需要公共库的都会优先从阿里云加速下载。在设置中,点击创建仓库。

 可以看到,我们可以创建多种仓库,Docker、Maven、NPM、Yum都可以。本文就以Maven为例了,其他仓库都类似。

 可以写个名字,然后在Remote Storage的地址栏中,输入阿里云的Maven仓库:

http://maven.aliyun.com/nexus/content/groups/public/

 写好后,就可以保存了。然后再进入maven-public组的设置,将我们刚刚创建的aliyun-repository代理库添加到右边,并调到第一个位置。这样一些公共库比如Spring就会默认从阿里云那边下载,并且Nexus会自带缓存功能,只有第一次需要下载。后续将直接从局域网的Nexus下载,大大加快了下载速度。(非常适合没有外网开发的团队)

 3.2 创建私有仓库

 Version policy下面有Release(正式版)、Snapshots(测试版)、Mixed(混合)三个选项,其实和我们平时引用第三方的库是一样的,只是我们一般会引用第三方库的正式版。Deployment policy这里我选择了Allow redeploy可以覆盖上传,你可以根据自身情况调整下面这些参数。

创建好后就可以直接使用了。但在此之前,我们最好配置一下开发账号,因为上传库的时候需要有账号密码。如果直接把系统管理员的账号给开发者会比较危险,毕竟现在删库跑路的很多。 

 可以配置一下Roles和Users这个也同样按照创建步骤来就行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值