架构师成长之路-docker 搭建maven私服企业开发平台 - 知乎
为什么要搭建maven私服平台?
1,因为大企业和规范化的平台和数据安全比较高的企业都是在涉密桌面开发,或者局域网开发,maven私服是企业一个很重要的jar管理平台和方式。
企业开发都有自己的jar管理平台,通常分为4个维度。
本地快照仓库:本地项目测试快照环境
本地Release仓库:本地仓库
代理仓库:第三方仓库:阿里云,maven仓库
组合仓库:统一管理本地快照仓库,本地Release仓库,代理仓库
2,企业级开发都是有自己的产品,所以对安全性要求比较高,局域网开发,涉密桌面开发,为了安全和统一管理选择maven私服。
3,企业私服走自己的局域网,下载速度比外网快,不用每次都下载这一点好处是不错的,速度就像docker镜像下载那么快。
4,企业有自己研发的产品jar包快照信息。
maven私服平台流程:
开发人员根据配置maven仓库地址拉取maven仓库地址,配置私服地址,maven私服地址是外网地址和内网仓库的桥梁。
基于Docker搭建Maven私服
1. 下载一个nexus3的镜像
docker pull sonatype/nexus3
2. 将容器内部/var/nexus-data挂载到主机/root/nexus-data目录。
docker run -d -p 8081:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3
正式规范后编写Docker Compose编排容器 启动容器管理。
3 启动成功查看容器运行
docker ps
访问页面
http://192.168.192.133:8081/
第一次进来需要让你查看密码
查找密码:
find / -name 'admin.password'
用户名是admin:
密码:cat /var/lib/docker/volumes/0391c87f4724fdb949f41e87069a1e13e69d106e1dde2fa461130da423504132/_data/admin.password
第一次会提示你修改
创建四个仓库:远程仓库,本地仓库,私服仓库,分组仓库
创建本地快照仓库-也就是测试jar包存放的仓库
创建本地Release仓库
创建代理仓库
创建分组仓库:
创建完成:
那现在我们看一个jar包都没有怎么办?
不慌我们写个脚本批量上传本地的jar包到maven私服仓库,这一步很关键。
批量写入本地仓库jar包到maven私服
1,把本地仓库的jar压缩
2,上传到linux目录里面解压
unzip repository.zip
3,创建批量导入maven脚本
touch mavenimport.sh
4,写入脚本内容
#!/bin/bash
#复制并运行此脚本到包含文件的存储库目录的根目录
#这个脚本循环调用maven上传jar的api url
while getopts ":r:u:p:" opt; do
case $opt in
r) REPO_URL="$OPTARG"
;;
u) USERNAME="$OPTARG"
;;
p) PASSWORD="$OPTARG"
;;
esac
done
find . -type f -not -path './mavenimport\.sh*' -not -path '*/\.*' -not -path '*/\^archetype\-catalog\.xml*' -not -path '*/\^maven\-metadata\-local*\.xml' -not -path '*/\^maven\-metadata\-deployment*\.xml' | sed "s|^\./||" | xargs -I '{}' curl -u "$USERNAME:$PASSWORD" -X PUT -v -T {} ${REPO_URL}/{} ;
注意:a,一定要给权限
b,脚本最好创建在maven仓库里面,不然会报no such file这样的问题
5,赋予脚本权限
chmod a+x mavenimport.sh
当前目录执行脚本:
./mavenimport.sh -u admin -p 你的密码 -r http://192.168.192.133:8081/repository/xy-release/
这里已经在疯狂地上传了,说明成功了。这里需要几分钟时间,因为仓库的jar包很大。
这里上传成功了。
查看我们的私服地址里面的jar包。是不是很nice
手动上传的方式:
总结:
仓库搭建好了,那就很简单了后面直接把本地maven的路径配置为分组仓库地址,配置私服的地址就行了。