Docker方式搭建Maven私服

news/2024/11/17 11:11:10/文章来源:https://www.cnblogs.com/nuccch/p/18425742

私服搭建

如下讲解如何基于Docker方式快速搭建Nexus3私服。

编写docker-compose.yaml文件,内容如下:

version: '2'services:nexus3:image: sonatype/nexus3:3.72.0container_name: nexus3restart: alwaysports:- '8081:8081' volumes:- '/data/opt/nexus3/data:/nexus-data'

为了避免因为目录访问权限问题导致Docker容器启动失败,需要修改宿主机的/data/opt/nexus3/data目录权限(可以授予所有权限,如:chmod -R 777 /data/opt/nexus3/data)。

执行docker-compose up启动容器,在浏览器中访问http://宿主机IP:8081地址,点击页面右上角的【Sign In】按钮, 就会出现下图登录弹窗:

Nexus默认登录账号为admin, 并且密码位于文件/nexus-data/admin.password下, 只需在本地配置的挂载目录/data/opt/nexus3/data下查看该文件即可。

$ ls -al /data/opt/nexus3/data/
total 80
drwxrwxrwx  14 root root  4096 Sep 13 09:36 .
drwxr-xr-x   3 root root  4096 Sep 13 09:34 ..
-rw-r--r--   1  200  200    36 Sep 13 09:36 admin.password  # 这就是nuxus的默认密码文件
drwxr-xr-x   3  200  200  4096 Sep 12 21:44 blobs
drwxr-xr-x 347  200  200 12288 Sep 13 09:35 cache
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 db
drwxr-xr-x   3  200  200  4096 Sep 12 21:44 elasticsearch
drwxr-xr-x   3  200  200  4096 Sep 12 21:43 etc
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 generated-bundles
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 instances
drwxr-xr-x   3  200  200  4096 Sep 12 21:43 javaprefs
-rw-r--r--   1  200  200     1 Sep 13 09:35 karaf.pid
drwxr-xr-x   3  200  200  4096 Sep 12 21:44 keystores
-rw-r--r--   1  200  200    14 Sep 13 09:35 lock
drwxr-xr-x   5  200  200  4096 Sep 22 15:39 log
-rw-r--r--   1  200  200     5 Sep 13 09:35 port
drwxr-xr-x   2  200  200  4096 Sep 12 21:43 restore-from-backup
drwxr-xr-x   8  200  200  4096 Sep 13 09:36 tmp

输入默认的账号密码成功登录之后,Nexus就会强制要求修改admin用户的密码, 并且设置基本访问权限,完成之后就正式进入了Nexus私服后台管理页面。

进入Nexus私服的配置界面,需要对默认配置进行几点调整。

修改私服中央仓库的代理仓库

修改私服中央仓库的代理仓库地址是为了加速访问。

将私服配置里中央仓库的代理仓库路径修改为阿里云仓库提供的代理地址:http://maven.aliyun.com/repository/central

创建hosted类型的仓库

创建hosted类型仓库(宿主仓库)是为了在私服中部署自定义组件。

点击Create repository:

然后选择类型为maven2(hosted)

然后输入仓库名称,并在Version policy一栏中选择Release,表示这个仓库的存储依赖为正式发布的组件,然后在Deployment policy一栏中选择Allow redeploy,表示允许部署和更新私服上的组件。

最后点击Create repository,就可以在仓库列表看到自定义的仓库了。
有了release仓库,再按照同样方式操作添加一个snapshot仓库,只需在Version policy一栏调整为Snapshot即可。

添加角色

Nexus默认只有两种角色:nx-anonymousnx-admin,前者只有浏览的权限,后者为管理员权限,一般情况下,还需要正对开发人员创建个角色。
点击Create Role,添加一个Role IDdeveloper的自定义角色,并且只添加自定义仓库的使用权限,删除操作除外。

添加用户

跟权限类似,默认的用户只有两种:adminanonymous,同样需要创建属于开发者的用户对象。
点击Create local user,填入用户名,密码等必填信息之后,关联角色,并保存即可。

用户创建完成之后,就可以用新的用户登录私服,查看对应权限的内容了。

设置仓库组

仓库组既然是“组”的概念,说明它里面可以包含多个仓库。

因为maven用户可以从代理仓库和宿主仓库中下载构建至本地仓库,为了方便从代理仓库和宿主仓库下载构建,maven提供了仓库组。

仓库组可以包含多个宿主仓库和代理仓库,maven用户访问一个仓库组就可以访问该仓库下的所有仓库。

仓库组中的多个仓库是有顺序的,当maven用户从仓库组中下载构建时,会按顺序在仓库组中查找组件,查到了就返回给本地仓库,所以一般将速度快的放前面。

仓库组内部实际是没有内容的,只是起到一个请求转发的作用,将maven用户的下载请求转发给其它仓库处理。

nexus默认有仓库组maven-public

点击maven-public打开如下:

仓库组对外URL:本地maven可以通过这个url从仓库组中下载构件至本地仓库。

仓库组中成员:刚刚新增的private-releaseprivate-snapshot在左边,需要将它们添加到到右边的成员列表中,并且放在最开始的位置,因为前面说过仓库组的查找是有顺序的,将宿主仓库放在最前面,这样查依赖时会最先从宿主仓库中查找,找不到时再从其他仓库查找,这样就能解决从私服下载内部构建组件的问题了(如果不这样设置,就无法下载部署到宿主仓库的组件)。

使用私服下载依赖

有了私服和账号,就需要在本地Maven配置文件setting.xml进行关联配置。

设置server账户信息

servers节点中配置server,用于连接Maven私服时进行认证。

  • id可以自己命名,后面需要与项目中保持一致。
  • username可以是admin,也可以是新创建的用户,密码是新建用户时设置的密码。
<servers><!-- 下载时的认证 --><server><id>test</id><username>user_name</username><password>user_pass</password></server>
</servers>

设置私服仓库地址

以下设置都是在本地Maven的conf/settings.xml文件中进行配置。

设置下载依赖的地址,在mirrors标签下添加如下内容:

<mirrors><!-- 用搭建好的私服的地址 --><mirror><id>central</id><mirrorOf>*</mirrorOf><name>Central Repository</name><!-- 私服仓库组地址 --><url>http://192.168.13.29:8081/repository/maven-public/</url></mirror><!-- 把阿里云的注释掉 --><!-- <mirror><id>nexus-aliyun</id><mirrorOf>central</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror>-->
</mirrors>

发布本地项目到私服

Maven配置

首先在Maven的settings.xml中配置登录信息(因为Nexus的仓库对于匿名用户是只读的,为了能够部署构件,还需要配置认证信息)。

<servers><!-- 下载时的认证 --><server><id>test</id><username>user_name</username><password>user_pass</password></server><!-- 部署认证 --><server><id>private-release</id> <!-- id 和下面 profiles 中的配置一致--><username>user_name</username><password>user_pass</password></server><!-- 部署认证 --><server><id>private-snapshot</id> <!-- id 和下面 profiles 中的配置一致--><username>user_name</username><password>user_pass</password></server>
</servers>

profiles标签下添加如下内容:

<profiles><profile><id>dev</id><repositories><repository><id>private-release</id><url>http://192.168.13.29:8081/repository/private-release/</url></repository><repository><id>private-snapshot</id><url>http://192.168.13.29:8081/repository/private-snapshot/</url></repository></repositories></profile>
</profiles>

项目配置

在项目的pom.xml文件中进行如下配置:

<!-- 指定仓库名称 -->
<distributionManagement><repository><!--id与 maven settings.xml 中的id文件保持一致--><id>private-release</id><!--对应的私服宿主仓库地址--><url>http://192.168.13.29:8081/repository/private-release/</url></repository><snapshotRepository><!--id与 maven settings.xml 中的id文件保持一致--><id>private-snapshot</id><!--对应的私服宿主仓库地址--><url>http://192.168.13.29:8081/repository/private-snapshot/</url></snapshotRepository>
</distributionManagement><build><pluginManagement><plugins><!--发布代码Jar插件--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>2.7</version></plugin><!--发布源码插件--><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-source-plugin</artifactId><version>2.2.1</version><executions><execution><phase>package</phase><goals><goal>jar</goal></goals></execution></executions></plugin></plugins></pluginManagement>
</build>

然后在IDEA中打开Maven菜单,双击deploy按钮即可完成发布。

【参考】
史上最详细的 Maven 私服搭建与使用指南
maven私服搭建详细教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/801639.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安全的路很长,致迷茫的你

最近有一些朋友找到我,跟我聊,说自己感觉很迷茫,不知所措,不知道未来该怎么办?安全该怎么做?OKR该怎么写?其实我想反问他以下几个问题: 1.漏洞研究了几个? 2.样本分析了几个? 3.这段时间看了多少安全技术类文档? 4.目前流行的恶意样本家族都有哪些? 5.目当流行的影…

我对什么都感兴趣,可我迷茫了

我收到一个同学给我的邮件问了个在我看来属于“太阳系”级的难题,比宇宙终极难题还差那么些^^他问: ----------------- 这几天一直挺困惑。说下我的问题,你有空的时候帮我解答下吧。 今天问自己个问题,找个自己的特长现在开始发展它。 基本上以后主要就靠这个特长工作。 但…

进程控制2

使用waitpid(pid, status,0);填入子进程的pid,阻塞父进程,直到子进程结束了,然后把子进程的pcb结构体的状态码读取出来。使用WIFEXITED(status)判断子进程是否正常退出,WEXITSTATUS(status)读取退出码来判断运行是否正常结束。 因为进程结束有3种情况:1.进程正常退出,并正…

电力煤矿液体泄漏识别系统

电力煤矿液体泄漏识别系统对电力煤矿危化品生产区域管道机械实时检测,当电力煤矿液体泄漏识别系统检测到机械管道出现液体泄漏时,系统立即抓拍存档并告警同步回传给报警信息给后台监控人员,让工作人员及时处理,电力煤矿液体泄漏识别系统实现危险区域跑冒滴漏异常自动监控抓…

河道水尺水位监测系统

河道水尺水位监测系统利用计算机视觉技术对河道湖泊水尺水位进行7*24小时全天候实时监测,当河道水尺水位监测系统监测到河道水位异常变化时,系统立即抓拍存档同步回传图片给后台监控平台,提醒后台工作人员及时处理异常情况,避免更大损失的发生。河道水尺水位监测系统适用于…

7-4DeepFM模型

DeepFM继承了Wide&Deep的主体结构,将高低特征进行融合。其主要创新点有2个。一是将Wide部分替换成了 FM结构,以更有效的捕获特征交互interaction;二是FM中的隐向量 和 Deep部分的 embedding 向量共享权重,减少模型复杂性。推荐系统和广告CTR预估主流模型的演化有两条主…

排水口排水识别系统

排水口排水识别系统基于Python基于YOLOv7深度学习的计算机视觉识别检测算法,排水口排水识别系统赋予传统监测系统智能检测能力提升企业污水排放监督管效率,7*24小时不间断准确判断检测场景内的是否出现排水口排水情况,减少后台监控人员的工作量,减少后台漏报误报产生的失误…

作业区域人数超员预警系统

作业区域人数超员预警系统利用现场已有摄像头对生产作业区域进行全天候不间断实时监测,一旦作业区域人数超员预警系统监测到作业区域人数超员时,立即进行抓拍存档并告知后台监控中心人员,提醒后台人员及时处理避免意外情况发生。作业区域人数超员预警系统对人数超员记录截图…

河道采砂船监测识别系统

河道采砂船监测识别系统通过计算机视觉深度学习技术对河道采砂区域进行实时监测,当河道采砂船监测识别系统监测到有采砂船通过停留非法采砂时,立即抓拍存档触发告警,同步回传给后台通知后台人员及时处理。河道采砂船监测识别系统对河道采砂区域进行7*24小时实时监测有效弥补…

仪表盘读数识别系统

仪表读数识别系统利用现场传统监控摄像头对仪表盘刻度数进行7*24小时实时读取,当仪表盘读数识别系统监测到仪表盘数据异常时,立刻推送给后台相关管理人员,工作人员在第一时间到现场进行处理,避免更大的损失发生。同时,将告警截图和视频保存到数据库形成报表。仪表盘读数识…

电力煤矿跑冒滴漏监测系统

电力煤矿跑冒滴漏监测系统基于计算机视觉分析技术,主动识别电力厂区监控视频中管道或者机械是否存在液体泄漏跑冒滴漏行为。如电力煤矿跑冒滴漏监测系统检测到现场出现液体泄漏行为,系统立即抓拍并反馈后台人员及时处理避免发生更大的危险。电力煤矿跑冒滴漏监测系统对工厂机…

校园打架行为识别检测系统

校园打架行为识别检测系统基于python深度学习框架+边缘分析技术,自动对校园监控视频图像信息进行分析识别。校园打架行为识别检测系统利用学校监控对校园、广场等区域进行实时监测,当监测到有人打架斗殴时,系统立即抓拍存档语音提醒,并将打架行为回传给学校监控后台,提醒后…