用Docker搭建Nexus私服

时间:2024-01-01 21:56:21
  • 搜索Nexus
  • 在docker容器中加载Nexus镜像
  • 发布本地项目到Nexus私服
    • 配置连接方式
    • 发布指令
    • 打源码包上传插件

搜索Nexus

  在我们打算使用Nexus时,我们先搜索一下docker景象仓库中现成的Nexus镜像。

docker search nexus
  • 1

其展示的结果如下:

[root@localhost ~]# docker search nexus
INDEX       NAME                                                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/sonatype/nexus                               Sonatype Nexus                                  379                  [OK]
docker.io   docker.io/sonatype/nexus3                              Sonatype Nexus Repository Manager 3             337
docker.io   docker.io/sonatype/docker-nexus3                       Sonatype Nexus 3 [DEPRECATED]                   27                   [OK]
docker.io   docker.io/clearent/nexus                                                                               21
docker.io   docker.io/baselibrary/nexus                            ThoughtWorks Docker Image: nexus                7                    [OK]
docker.io   docker.io/accenture/adop-nexus                         ADOP Nexus                                      5                    [OK]
docker.io   docker.io/bradbeck/nexus-https                         Dockerized version of Nexus Repo Manager 3...   5                    [OK]
docker.io   docker.io/frekele/nexus                                docker run --rm --name nexus -p 8081:8081 ...   4                    [OK]
docker.io   docker.io/shifudao/nexus3                              clone from nexus3 image but based from ope...   3                    [OK]
docker.io   docker.io/sonatype/nexus-iq-server                     Sonatype Nexus IQ Server                        3
docker.io   docker.io/cavemandaveman/nexus                         Sonatype Nexus container                        2                    [OK]
docker.io   docker.io/fabric8/nexus                                                                                2                    [OK]
docker.io   docker.io/madmuffin/nexus3                             Sonatype Nexus3 Milestone7 docker image         2                    [OK]
docker.io   docker.io/mcreations/jenkins-with-nexus-support        Jenkins image with correct SSL config for ...   1                    [OK]
docker.io   docker.io/openshiftdemos/nexus                         Sonatype Nexus with JBoss Enterprise repos...   1                    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

  在这里,被大家使用频率越高的版本往往STARS指数越高,排位也就越靠前,这样,我们直接拉取第一个来使用就可以了。

docker pull docker.io/sonatype/nexus
  • 1

  如下:

[root@localhost ~]# docker pull docker.io/sonatype/nexus
Using default tag: latest
Trying to pull repository docker.io/sonatype/nexus ...
latest: Pulling from docker.io/sonatype/nexus
af4b0a2388c6: Pull complete
e2c659f5d884: Pull complete
37f6e458506e: Pull complete
b8ce98aa6771: Pull complete
90969e21cd0f: Pull complete
Digest: sha256:90f8ec0dadf5fef6bab1269a96f4e71583dadb366dde3cc664c599da5e1421e7
[root@localhost ~]# docker run -d -p 8081:8081 --name nexus docker.io/sonatype/nexus
5f23e18df895901f33a7abf01870984a65257f977e27266d6d319706b6e06719
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在docker容器中加载Nexus镜像

  指令如下:

docker run -d -p 8081:8081 --name nexus docker.io/sonatype/nexus
  • 1

  运行结果:

[root@localhost ~]# docker run -d -p 8081:8081 --name nexus docker.io/sonatype/nexus
5f23e18df895901f33a7abf01870984a65257f977e27266d6d319706b6e06719
  • 1
  • 2

  在Nexus运行时,这可能需要等待一段很短的时间,我们可以通过查看Nexus的日志来了解Nexus的运行情况,其指令如下:

docker logs -f nexus
  • 1

  当docker运行起来后,我们就可以在浏览器中进行访问了,访问地址为:

http://192.168.44.128:8081/nexus/#welcome
  • 1

  其中192.168.44.128为虚拟机所对应的ip地址,大家在这里填写自己所在的ip地址即可。

  运行的界面如下:

用Docker搭建Nexus私服

  当看到这里时,这说明我们的Nexus已经正常运行,可以进行使用了。

  如果想查看与Nexus相关的更多docker镜像信息,可以到这里去查看Nexus的docker镜像官方文档。

https://hub.docker.com/r/sonatype/nexus/
  • 1

  在这里,docker的默认账号为admin,默认密码为admin123,直接将其拿来就可以使用了。

发布本地项目到Nexus私服

配置连接方式

  配置Maven的settings.xml

    <server>
      <id>user-release</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>user-snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

  配置项目的pom.xml

<distributionManagement>
    <repository>
      <id>user-release</id>
      <name>user release resp</name>
      <url>http://192.168.44.128:8081/nexus/content/repositories/releases/</url>
    </repository>
    <snapshotRepository>
      <id>user-snapshots</id>
      <name>user snapshots resp</name>
      <url>http://192.168.44.128:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository>
  </distributionManagement>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

  该连接地址在Nexus的页面中就可以找到,如:

用Docker搭建Nexus私服

  直接来拿复制粘贴就可以了。

发布指令

  在项目中,运行下列指令将项目发布到私服中

mvn deploy
  • 1

  或点击IDEA中的deploy快捷指令

用Docker搭建Nexus私服

  运行结果:

Downloading from user-snapshots: http:www.255055.cn/ //192.168.44.128:8081/nexus/content/repositories/snapshots/com/mycompany/linear-table/2.0-SNAPSHOT/maven-metadata.xml
Uploading to user-snapshots: http://192.168.44.128:8081/nexus/content/repositories/snapshots/com/mycompany/linear-table/2.0-SNAPSHOT/linear-table-2.0-20180409.124308-1.jar
Uploaded to user-snapshots: http://www.douniu178.com 192.168.44.128:8081/nexus/content/repositories/snapshots/com/mycompany/linear-table/2.0-SNAPSHOT/linear-table-2.0-20180409.124308-1.jar (17 kB at 114 kB/s)
Uploading to user-snapshots: http://192.168.44.128:8081/nexus/content/repositories/snapshots/com/mycompany/linear-table/2.0-SNAPSHOT/linear-table-2.0-20180409.124308-1.pom
Uploaded to user-snapshots: http://www.chuangyed.com 192.168.44.128:8081/nexus/content/repositories/snapshots/com/mycompany/linear-table/2.0-SNAPSHOT/linear-table-2.0-20180409.124308-1.pom (1.8 kB at 30 kB/s)
Downloading from user-snapshots: http://192.168.44.128:8081/nexus/content/repositories/snapshots/com/mycompany/linear-table/maven-metadata.xml
Uploading to user-snapshots: http://192.168.44.128:8081/nexus/content/repositories/snapshots/com/mycompany/linear-table/2.0-SNAPSHOT/maven-metadata.xml
Uploaded to user-snapshots: http://192.168.44.128:8081/nexus/content/repositories/snapshots/com/mycompany/linear-table/2.0-SNAPSHOT/maven-metadata.xml (769 B at 20 kB/s)
Uploading to user-snapshots: http://192.168.44.128:8081/nexus/content/repositories/snapshots/com/mycompany/linear-table/maven-metadata.xml
Uploaded to user-snapshots: http://192.168.44.128:8081/nexus/content/repositories/snapshots/com/mycompany/linear-table/maven-metadata.xml (283 B at 7.6 kB/s)

  发布后的结果:

用Docker搭建Nexus私服

打源码包上传插件

  源码包上传插件如下,将其添加到项目的pom.xml文件中即可。

<build>
    <plugins>
      <plugin> <!-- 打jar包 -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.0.1</version>
        <configuration>
          <excludes>
            <exclude>**/*.properties</exclude>
          </excludes>
        </configuration>
      </plugin>
      <plugin> <!-- 打源码 -->
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-source-plugin</artifactId>
        <version>3.0.1<www.boshenyl.cn /version>
        <configuration>
          <attach>true</attach>
        </configuration>
        <executions>
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>jar<www.mcyllpt.com/goal>
            <www.feihuanyule.com /goals>
          </execution>
        </executions>
      </plugin>
    <www.gouyiflb.cn /plugins>
  <www.caibaoyule.cn /build>

  当添加上上述插件后,当我们执行mvn deploy时,我们的项目源码包也将会一并发布到Nexus私服中