美文网首页
Docker搭建Nexus私有仓库

Docker搭建Nexus私有仓库

作者: 非典型_程序员 | 来源:发表于2020-09-08 22:17 被阅读0次

最近项目开发中需要对一些jar包进行修改,但是因为项目组当前没有私有的Maven镜像仓库,所以自己想搭建一个我们项目组专用的私有镜像服务器。网上看了一些资料好像使用Nexus比较多,所以自己也准备自己使用Nexus搭建一个Maven私服。
相关的资料文档建议查看官网
Nexus下载地址
根据自己的系统进行下载即可,Linux系统选择Unix archive版本即可。
最开始我本来想在自己的电脑上先安装一个尝试一下,结果下载过程中发现下载速度真的是特别的慢,所以最后决定选择使用Docker进行部署。

1、拉取镜像

首先查找下Nexus相关的仓库

docker search nexus3

结果如下:

NAME                                  DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
sonatype/nexus3                       Sonatype Nexus Repository Manager 3             868                                     
shifudao/nexus3                       clone from nexus3 image but based from openj…   4                                       [OK]
madmuffin/nexus3                      Sonatype Nexus3 Milestone7 docker image         2                                       [OK]
home1oss/nexus3                       An auto configured nexus3                       2                                       [OK]
alvindaiyan/nexus3-azure-appservice                                                   1                                       
cirepo/nexus3                         An auto configured nexus3                       1                                       [OK]
....
                          

这里选择官方的仓库。拉取镜像到本地:

docker pull sonatype/nexus3

如果拉取速度较慢可选择使用国内的Docker镜像源仓库,修改Docker配置daemon.json

vi /etc/docker/daemon.json
### 添加配置
"registry-mirrors": ["https://registry.docker-cn.com","http://hub-mirror.c.163.com"],
"data-root": "/home/ypcfly/docker/data"

另外这里我也修改了Docker的数据根目录。

2、运行Nexus

docker run -d -p 8081:8081 --name nexus3 -e NEXUS_CONTEXT=nexus   sonatype/nexus3

因为是第一次启动,所以没有做什么特别的配置,也没有挂在目录。
启动之后我们查看启动日志:

docker logs -f nexus3

第一次启动可能会比较慢一点,启动的时候最好不要限制内存,如果限制的话内存最好大一点,比如2G,内存偏小也会导致启动失败。
看到下面内容,说明Nexus启动成功:

.......
-------------------------------------------------

Started Sonatype Nexus OSS 3.27.0-03

-------------------------------------------------

3、访问Nexus并创建仓库

默认端口是8081,我们在运行时进行的端口映射也是8081,所以直接在浏览器访问:
localhost:8081
结果发现404,有点蒙了,启动日志没有问题啊,端口也没问题.....后来在看启动命令-e NEXUS_CONTEXT=nexus,发现自己添加了上下文。添加访问上下文nexus,再次在浏览器输入:
localhost:8081/nexus
浏览器显示如下图:

图-1.png
点击右上角Sign in登陆,默认账号admin,我网上之前看到有的文章说默认密码是admin123,但是自己尝试之后发现密码错误,所以又看了官方文档。官方文档说的是:

Its username is admin and the initial password can be found in an admin.password file in the $data-dirdirectory. You can sign in with the button on the top right corner of the user interface.

意思是说默认密码是在数据目录下的admin.password中,但是因为自己启动时没有进行目录挂载,所以只能进入容器内进行查找:

$ docker exec -it  nexus3   sh
## 进入`nexus-data`
$ cd nexus-data
$ ls
$ vi admin.password
## 复制密码后退出容器
$ exit

进入容器内找到了nexus-data目录,然后找到admin.password,重新输入密码后,登录成功,然后会提示设置访问权限:

图-2.png
也就是是否允许匿名访问,根据情况选择就可以了。
为了方便登录我们再创建一个用户,点击Security -> Users -> Create User
输入相关信息,并赋予该用户管理员的权限:
图-3.png

接下来我们创建一个自己的仓库:
点击 Repository -> Repositories -> Create repository

图-4.png

这时候可以看到很多不同类型的仓库,比如apt、docker、maven2、yum、go、helm等等。这里需要介绍一下repository的几种类型:

hosted,本地仓库,一般情况我们会部署的都是这一类型的仓库。比如自己公司的私有仓库。
proxy,代理仓库,顾名思义,它们被用来代理远程的公共仓库,如maven中央仓库。
group,仓库组,用来合并多个hosted/proxy仓库,当你的项目希望在多个repository使用资源时就不需要多次引用了,只需要引用一个group即可。

所以我这里选择maven2(hosted)
输入仓库名称:ypc,然后根据自己的情况选择Version policyDeployment policy等,保存之后就看到自己的仓库已经出现了

图-5.png
创建好之后我们就可以将自己的一些jar包等推送到自己的镜像仓库了。

4、测试发布jar到仓库

既然创建好了我们的私有仓库,那么我们就要测试一下,能否将我们的jar推送到我们的Maven私服。首先我们需要创建一个项目,为了方便我就打开了一个之前的spring boot项目,准备用这个项目做试验。开始之前先看下我的pom.xml中这个项目的坐标信息:

...
    <groupId>com.ypc.rocketmq</groupId>
    <artifactId>rocketmq-starter</artifactId>
    <version>1.0-RELEASE</version>
    <name>rocketmq</name>
    <description>test rocketmq starter</description>
    <packaging>jar</packaging>
...

关于坐标的作用我想不需要我再做解释了吧,简单点说就是一个jar包的地址,就是用来定位jar包。
为了将我们打的jar包推送到我们私有仓库,需要修改项目的pom.xml文件,添加自己私有仓库的相关信息,如下:

<project>
    ......
    <!--Maven 仓库配置-->
    <distributionManagement>
        <repository>
            <id>release</id>
            <name>Release</name>
            <url>http://localhost:8081/nexus/repository/ypc/</url>
        </repository>
        <snapshotRepository>
            <id>snapshot</id>
            <name>Snapshot</name>
            <url>http://localhost:8081/nexus/repository/ypc/</url>
        </snapshotRepository>
    </distributionManagement>
</project>

在这里配置了一个release和一个snapshot两个仓库,一个用来发布正式的jar,一个发布测试jar。idname属性根据自己的需求填写就行了,url就是仓库ypc的地址,可以直接从浏览器复制。
但是毕竟项目的打包、发布都是需要使用Maven的,所以接下来我们需要修改Maven的配置文件,即setting.xmlMaven配置文件中需要配置的地方相对较多,这里一步一步来说明。
首先,添加访问server配置,即我们访问Maven私服仓库时的信息,比如用户名、密码或者私钥。这里配置的id需要和上面pom.xml中的id保持一致,用户名和密码根据自己的情况进行填写,admin的密码登录之后我是做了修改的。

<settings>
....
    <server>
      <id>release</id>
      <username>admin</username>
      <password>admin123456</password>
    </server>
    <server>
      <id>snapshot</id>
      <username>admin</username>
      <password>admin123456</password>
    </server>   
....

其次,我们需要配置镜像信息,也就是私有仓库的镜像地址,下面的配置中我添加了一个镜像配置,并且覆盖了默认的仓库地址。在配置文件这里,添加了一个反而idnexus,在该配置文件中我配置了一个repository和一个pluginRepository两个仓库,不过都指向的是同一个URL

<settings>
....
    <mirror>
       <id>central</id>
       <mirrorOf>*</mirrorOf>
       <url>http://localhost:8081/nexus/repository/ypc/</url>
    </mirror>

  <profiles>
    <profile>
      <id>nexus</id>
      <!--Enable snapshots for the built in central repo to direct -->
      <!--all requests to nexus via the mirror -->
      <repositories>
        <repository>
          <id>release</id>
          <url>http://localhost:8081/nexus/repository/ypc/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </repository>
      </repositories>
     <pluginRepositories>
        <pluginRepository>
          <id>snapshot</id>
          <url>http://localhost:8081/nexus/repository/ypc/</url>
          <releases><enabled>true</enabled></releases>
          <snapshots><enabled>true</enabled></snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>

  </profiles>

  <activeProfiles>
  <!--指定生效的配置文件 -->
    <activeProfile>nexus</activeProfile>
  </activeProfiles>
...

到这里需要添加或者修改的配置到这里就完成了,接下来我们测试一下把我们的项目打包,并发布发到我们的镜像仓库,因为idea自带了相关的插件,所以我就直接使用插件了(命令我也记不住...),直接点击deploy,然后会看到相关的日志信息,下面是部分截图

图-6.png
可以看到有上传到release仓库的相关信息。
最后我们在登录到仓库看一下上传的jar包信息:
图-7.png
根据上图的信息也可以看出我们的jar包已经成功发布到我们的私有镜像仓库了。关于从私有镜像仓库下载jar包其实和从Maven中央仓库下载没有什么区别,这里就不再测试了。
关于使用Docker搭建Nexus私有Maven镜像仓库,以及发布jar包到Nexus就到这里了,总体来看还是比较简单的,感兴趣的小伙伴不妨都尝试一下。

相关文章

  • Kubernetes部署Nexus3

    Kubernetes部署Nexus3 重点参考kubernetes集群:nexus搭建docker私有仓库及使用 ...

  • maven备忘

    1. 搭建私有库 使用docker搭建私有maven库,docker image为sonatype/nexus3 ...

  • Docker搭建Nexus私有仓库

    最近项目开发中需要对一些jar包进行修改,但是因为项目组当前没有私有的Maven镜像仓库,所以自己想搭建一个我们项...

  • Docker搭建Nexus私有仓库

    Nexus3是Sonatype提供的仓库管理平台,Nuexus Repository OSS3能够支持Maven、...

  • 【nexus】Nexus 3.x的三种docker仓库

    Nexus 3.x 可以创建三种docker仓库: docker (hosted) 托管仓库 ,私有仓库,可以pu...

  • Docker

    构建镜像仓库 Docker运行java程序 1.1.6 搭建docker私有仓库 新建私有仓库 1.2.1 数据挂...

  • 使用nexus搭建maven私库

    什么是nexus? nexus是一个maven仓库管理器,使用nexus可以快速便捷的搭建自己的maven私有仓库...

  • 5.私有与公有镜像仓库

    一. 搭建私有镜像仓库 Docker Hub作为Docker默认官方公共镜像;如果想自己搭建私有镜像仓库,官方也提...

  • Nexus搭建并代理AliYun镜像

    使用 Docker 搭建 Nexus3 私服. Docker 仓库地址 https://hub.docker.co...

  • Windows环境搭建Maven私有仓库

    Windows环境搭建Maven私有仓库 一:Nexus概述 我们在讲Nexus之前,先来看个问题,为什么要搭建 ...

网友评论

      本文标题:Docker搭建Nexus私有仓库

      本文链接:https://www.haomeiwen.com/subject/gtycektx.html