Docker 搭建nexus私服


一、概述

有三種專門的Maven倉庫管理軟件可以用來幫助大家建立私服:Apache基金會的Archiva、JFrog的Artifactory和Sonatype的Nexus。而Nexus是當前最流行的Maven倉庫管理工具。
 私服是一種特殊的遠程倉庫,它是架設在局域網內的倉庫服務,私服代理廣域網上的遠程倉庫。供局域網內的Maven用戶使用。當Maven需要下載構件的時候,它從私服請求,如果私服上不存在該構件,則從遠程倉庫下載,緩存在私服上以后,再為Maven的下載請求提供服務。此外,一些無法從外部倉庫下載到的構件也能從本地上傳到私服上供大家服務。

 

私服的工作原理容如下圖所示:

 

二、安裝nexus

環境說明

操作系統:centos 7.6

java版本:1.8.0_211

maven版本:3.6.3

docker版本:19.03.5

ip地址:192.168.31.183

 

拉取鏡像

拉取最新版本,目前最新版本是3.20.1

docker pull sonatype/nexus3

 

持久化目錄

mkdir -p /data/nexus/data
chmod 777 -R /data/nexus/data

 

啟動鏡像

docker run -d -p 8081:8081 --name nexus -v /data/nexus/data:/nexus-data sonatype/nexus3

 

查看日志

docker logs -f nexus

輸出:

...
2019-12-26 08:06:12,134+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.AbstractConnector - Started ServerConnector@42da9de6{HTTP/1.1,[http/1.1]}{0.0.0.0:8081}
2019-12-26 08:06:12,135+0000 INFO  [jetty-main-1] *SYSTEM org.eclipse.jetty.server.Server - Started @102936ms
2019-12-26 08:06:12,137+0000 INFO  [jetty-main-1] *SYSTEM org.sonatype.nexus.bootstrap.jetty.JettyServer - 
-------------------------------------------------
Started Sonatype Nexus OSS 3.20.1-01
-------------------------------------------------

等待幾分鍾時間,出現 Started Sonatype Nexus OSS 表示啟動好了。

 

三、訪問nexus

打開瀏覽器,訪問 http://192.168.31.183:8081/

 

點擊右側的登錄

查看管理員admin密碼

# cat /data/nexus/data/admin.password

 

登錄

 

開始設置

 

修改密碼

 

確認配置

 

四、添加阿里雲maven代理

點擊settings->Repository->Repositories

點擊Create repositoty按鈕

 

選擇maven2 (proxy)

 

填寫如下兩個字段,分別是代理庫的名稱,所代理的上層庫的url。阿里雲url為:http://maven.aliyun.com/nexus/content/groups/public/

 

滾動到頁面最下方,點擊“Create repositoty”按鈕。

 

可以看到剛剛新建的代理庫已經存在了。

 

重新配置maven-public組,使其包含新建的aliyun-maven。在如上頁面,點擊maven-public,進入到配置頁面。按下圖進行修改。把aliyun-maven移至右側,並向上移至第一位。然后點擊保存。

 

點擊左側菜單Repositoty>Repositories,進入到倉庫列表頁面,點擊maven-public一行的copy按鈕,然后復制彈出的url,后面配置maven時需要使用。

 

四、配置maven

修改配置文件

cd /data/apache-maven-3.6.3/conf
cp settings.xml settings.xml.bak
vim settings.xml

 

添加服務器認證信息,增加紅色部分內容

    <!-- Another sample, using keys to authenticate.
    <server>
      <id>siteServer</id>
      <privateKey>/path/to/private/key</privateKey>
      <passphrase>optional; leave empty if not used.</passphrase>
    </server>
    --> 
    <server>
        <id>maven-releases</id>
        <username>admin</username>
        <password>abcd1234</password>
    </server>
    <server>
        <id>maven-public</id>
        <username>admin</username>
        <password>abcd1234</password>
    </server>
  </servers>

注意:修改為自己設置的密碼。

 

增加mirrors

    <mirror>
      <id>mirrorId</id>
      <mirrorOf>repositoryId</mirrorOf>
      <name>Human Readable Name for this Mirror.</name>
      <url>http://my.repository.com/repo/path</url>
    </mirror>
     -->
    <mirror>
      <id>maven-public</id>
      <name>maven-public</name>
        <url>http://192.168.31.183:8081/repository/maven-public/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  </mirrors>

注意:修改ip地址為服務器ip

 

五、測試nexus私服

下載一個SpringBootDemo,進行打包測試。

yum install -y git
git clone https://github.com/solochen84/SpringBootDemo.git

 

使用mvn命令打包

# cd SpringBootDemo/
# mvn clean install
[INFO] Scanning for projects...
Downloading from maven-public: http://192.168.31.183:8081/repository/maven-public/org/springframework/boot/spring-boot-starter-parent/1.5.4.RELEASE/spring-boot-starter-parent-1.5.4.RELEASE.pom
Downloaded from maven-public: http://192.168.31.183:8081/repository/maven-public/org/springframework/boot/spring-boot-starter-parent/1.5.4.RELEASE/spring-boot-starter-parent-1.5.4.RELEASE.pom (7.5 kB at 7.6 kB/s)
Downloading from maven-public: http://192.168.31.183:8081/repository/maven-public/org/springframework/boot/spring-boot-dependencies/1.5.4.RELEASE/spring-boot-dependencies-1.5.4.RELEASE.pom
Downloaded from maven-public: http://192.168.31.183:8081/repository/maven-public/org/springframework/boot/spring-boot-dependencies/1.5.4.RELEASE/spring-boot-dependencies-1.5.4.RELEASE.pom (93 kB at 187 kB/s)
Downloading from maven-public: http://192.168.31.183:8081/repository/maven-public/com/fasterxml/jackson/jackson-bom/2.8.8/jackson-bom-2.8.8.pom
...
[INFO] Installing /root/SpringBootDemo/pom.xml to /root/.m2/repository/com/example/spring-boot-demo/0.0.1-SNAPSHOT/spring-boot-demo-0.0.1-SNAPSHOT.pom
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  04:13 min
[INFO] Finished at: 2019-12-30T20:15:26+08:00
[INFO] ------------------------------------------------------------------------

如果有輸出:http://192.168.31.183:8081/repository/maven-public,說明正在使用 nexus私服

最后提示:BUILD SUCCESS,表示構建完成。

 

構建完成后,它會自動創建一個target目錄,這里面存放jar包

# ls -l  target/
總用量 14824
drwxr-xr-x 3 root root       40 12月 30 20:13 classes
drwxr-xr-x 3 root root       25 12月 30 20:13 generated-sources
drwxr-xr-x 3 root root       30 12月 30 20:13 generated-test-sources
drwxr-xr-x 2 root root       28 12月 30 20:14 maven-archiver
drwxr-xr-x 3 root root       35 12月 30 20:13 maven-status
-rw-r--r-- 1 root root 15170293 12月 30 20:15 spring-boot-demo-0.0.1-SNAPSHOT.jar
-rw-r--r-- 1 root root     6517 12月 30 20:14 spring-boot-demo-0.0.1-SNAPSHOT.jar.original
drwxr-xr-x 2 root root      129 12月 30 20:13 surefire-reports
drwxr-xr-x 3 root root       17 12月 30 20:13 test-classes

 

啟動jar包

# java -jar target/spring-boot-demo-0.0.1-SNAPSHOT.jar

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v1.5.4.RELEASE)
...
2019-12-30 20:18:39.923  INFO 23047 --- [           main] o.s.j.e.a.AnnotationMBeanExporter        : Registering beans for JMX exposure on startup
2019-12-30 20:18:40.065  INFO 23047 --- [           main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2019-12-30 20:18:40.077  INFO 23047 --- [           main] c.e.demo.SpringBootDemoApplication       : Started SpringBootDemoApplication in 8.484 seconds (JVM running for 9.609)

 

訪問頁面

http://192.168.31.183:8080/

效果如下:

 

如果有第三方的sdk,阿里雲maven沒有時,可以上傳到nexus私服。

回到首頁,點擊Upload,上傳到 maven-relaases,Extension會自動填充

需要提供 Group ID,Atriface ID,Version。這個問java開發要一個。

 

 

 

但是,還是推薦將 第三方sdk嵌入到java項目里面,不使用nexus私服下載。如果一但nexus私服掛掉了,就很麻煩了。

nexus私服還是去阿里雲maven下載比較好。

 

本文參考鏈接:

https://www.cnblogs.com/wotoufahaiduo/p/11223834.html
https://blog.csdn.net/lk142500/article/details/91357441
https://www.cnblogs.com/sybblogs/p/9835977.html

https://www.jianshu.com/p/e8e3ba719785


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM