1. 程式人生 > >用Docker搭建Nexus私服

用Docker搭建Nexus私服

搜尋Nexus

  在我們打算使用Nexus時,我們先搜尋一下docker景象倉庫中現成的Nexus映象。

docker search nexus

其展示的結果如下:

[[email protected] ~]# 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

  在這裡,被大家使用頻率越高的版本往往STARS指數越高,排位也就越靠前,這樣,我們直接拉取第一個來使用就可以了。

docker pull docker.io/sonatype/nexus

  如下:

[[email protected] ~]# 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
[[email protected] ~]# docker run -d -p 8081:8081 --name nexus docker.io/sonatype/nexus
5f23e18df895901f33a7abf01870984a65257f977e27266d6d319706b6e06719

在docker容器中載入Nexus映象

  指令如下:

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

  執行結果:

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

  在Nexus執行時,這可能需要等待一段很短的時間,我們可以通過檢視Nexus的日誌來了解Nexus的執行情況,其指令如下:

docker logs -f nexus

  當docker執行起來後,我們就可以在瀏覽器中進行訪問了,訪問地址為:

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

  其中192.168.44.128為虛擬機器所對應的ip地址,大家在這裡填寫自己所在的ip地址即可。

  執行的介面如下:

這裡寫圖片描述

  當看到這裡時,這說明我們的Nexus已經正常執行,可以進行使用了。

  如果想檢視與Nexus相關的更多docker映象資訊,可以到這裡去檢視Nexus的docker映象官方文件。

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

  在這裡,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>

  配置專案的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>

  該連線地址在Nexus的頁面中就可以找到,如:

這裡寫圖片描述

  直接來拿複製貼上就可以了。

釋出指令

  在專案中,執行下列指令將專案釋出到私服中

mvn deploy

  或點選IDEA中的deploy快捷指令

這裡寫圖片描述

  執行結果:

Downloading from user-snapshots: http://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://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://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)

  釋出後的結果:

這裡寫圖片描述

打原始碼包上傳外掛

  原始碼包上傳外掛如下,將其新增到專案的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</version>
        <configuration>
          <attach>true</attach>
        </configuration>
        <executions>
          <execution>
            <phase>compile</phase>
            <goals>
              <goal>jar</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
    </plugins>
  </build>

  當新增上上述外掛後,當我們執行mvn deploy時,我們的專案原始碼包也將會一併釋出到Nexus私服中