群暉DS218+做maven私服(nexus3)


歡迎訪問我的GitHub

https://github.com/zq2599/blog_demos

內容:所有原創文章分類匯總及配套源碼,涉及Java、Docker、Kubernetes、DevOPS等;

背景

本人是個Java工程師,在家里擼代碼時台式機、筆記本、虛擬機都可能用來編譯構建maven項目,此時如果家里有個maven私服,對構建速度的提升效果是明顯的;

糾結

准備一台電腦部署好私服后,是24小時開機么?似乎有些浪費,那么用的時候開啟,用完關機?略為麻煩(您想罵我懶么?您罵得對...)

群暉DS218+

家里有一台群暉DS218+,很久以來始終24小時開機為全家服務,如果能把私服裝到這里,似乎前面的糾結就沒有了;

  1. 下圖是DS218+剛買來的樣子,兩塊NAS硬盤,一直穩定服務中:
    在這里插入圖片描述
  2. 下圖是網購的內存條,現在一共2+8=10G內存,內存充足才是敢折騰maven私服的底氣:
    在這里插入圖片描述

思路

其實操作很簡單:群暉帶有docker服務,用docker來部署nexus即可,所以,本文其實也就是群暉docker的基本操作記錄,以下幾處是要注意的地方:

  1. 容器端口
  2. 容器數據卷
  3. 文件權限
  4. 登錄容器操作

環境信息

  1. 群暉系統:DSM 6.2.2-24922 Update 4
  2. 部署nexus之前群暉的資源情況:
    在這里插入圖片描述
  3. 打開Docker,在注冊表頁面搜索nexus,找到sonatype/nexus3,選擇標簽3.19.1,如下圖:
    在這里插入圖片描述
  4. 鏡像下載完畢后,在映像頁面選中該鏡像,點擊啟動按鈕:
    在這里插入圖片描述
  5. 在啟動頁面點擊高級設置
    在這里插入圖片描述
  6. 允許容器自動重啟,創建桌面快捷方式:
    在這里插入圖片描述
  7. 數據卷映射,按照下圖操作,在宿主機新建一個文件夾,名為nexus3
    在這里插入圖片描述
  8. 再將容器的/nexus-data目錄映射到宿主機的nexus3,這樣容器的所有數據都能保存下來了:
    在這里插入圖片描述
  9. 端口映射,如果宿主機的8081端口沒有被占用,就直接映射到8081吧,否則換一個沒占用的:
    在這里插入圖片描述
  10. 設置完成,勾選向導完成后運行此容器,再點擊應用即可創建nexus3容器:
    在這里插入圖片描述
  11. 本以為這樣就完成了,沒想到彈出很多報錯的消息:
    在這里插入圖片描述
  12. 如下圖,查看容器日志:
    在這里插入圖片描述
  13. 很快就查到了問題:宿主機映射給容器的目錄,容器的進程因為權限問題寫操作失敗了:
    在這里插入圖片描述
  14. 想想也是,為了安全起見,宿主機的nexus3目錄,容器是不能隨意操作的,這里我們就給把這個目錄的寫權限放開吧,如下圖,用File Station來設置這個目錄:
    在這里插入圖片描述
  15. 增加寫入權限:
    在這里插入圖片描述
  16. 上述操作完畢后開始等待,因為容器每次意外退出后會自動重啟,終於,看到了啟動成功的日志:
    在這里插入圖片描述

操作nexus3

  1. 我這里群暉的內網IP是192.168.50.42,因此瀏覽器訪問地址:http://192.168.50.42:8081,熟悉的頁面出來了:
    在這里插入圖片描述
  2. 接下來要面對的問題是如何取得登錄密碼,nexus的默認密碼保存在容器的/nexus-data/admin.password文件中,所以有以下兩種方法取得,您任選一種吧;
  3. 容器的/nexus-data目錄已經映射到宿主機的docker/nexus3目錄,所以用File Statiion打開該目錄,下載admin.password文件,再用文本編輯器打開即可:
    在這里插入圖片描述
  4. 另一種方法是進入容器查看該文件,操作如下,選中容器增加一個命令:
    在這里插入圖片描述
  5. 在彈出的輸入框中輸入/bin/bash,這樣就在該容器的namespace下新建了bash進程,該進程可見同一個namespace下的所有文件,包括/nexus-data/admin.password,再用cat命令查看文件內容即可:
    在這里插入圖片描述
  6. 拿到密碼后就能在頁面上登錄nexus了,賬號是admin
    在這里插入圖片描述
  7. 登錄成功后,按照提示設置新密碼:
    在這里插入圖片描述
  8. 接下來就是nexus的常規操作了,這里不再多說,挑重點說吧,新建一個管理員權限的賬號bolingcavalry,設置密碼為123456
    在這里插入圖片描述
  9. 取得私服的中央倉庫地址:
    在這里插入圖片描述
  10. 至此,部署成功,接下來驗證一下這個私服好不好用。

准備兩台電腦驗證Nexus服務

下圖是部署私服后的架構圖:
在這里插入圖片描述
准備兩台電腦,分別是A電腦和B電腦,用來驗證剛剛部署的Nexus3可以緩存中央倉庫的jar包(您也可以用虛擬機創建兩台電腦);

  1. A、B兩台電腦都已經裝好了JDK8和Maven3;
  2. A、B兩台電腦上的maven目錄下的conf/settings.xml文件都要做以下修改;
  3. 找到servers節點,增加以下內容:
<server>
  <id>maven-central</id>
  <username>bolingcavalry</username>
  <password>123456</password>
</server>
  1. 找到mirrors節點,增加以下內容,其中url的內容就是前面得到的maven-central倉庫地址:
<mirror>
  <id>maven-central</id>
  <mirrorOf>*</mirrorOf>
  <url>http://192.168.50.42:8081/repository/maven-central/</url>
</mirror>

在A電腦上編譯構建項目(應該很慢)

在A電腦上編譯開源項目spring-cloud-alibaba,此時Nexus上沒有緩存任何jar包,所以編譯速度會很慢,因為所有依賴jar都要從中央倉庫下載,我們來試試:

  1. 登錄A電腦,下載spring-cloud-alibaba的2.1.1.RELEASE歸檔包:
wget https://github.com/alibaba/spring-cloud-alibaba/archive/v2.1.1.RELEASE.tar.gz
  1. 解壓下載的文件:
tar -zxvf v2.1.1.RELEASE.tar.gz
  1. 進入解壓后的目錄:
cd spring-cloud-alibaba-2.1.1.RELEASE/
  1. 編譯:
mvn clean compile -U -DskipTests
  1. 編譯完成,如下圖紅框所示,本次編譯耗時7分32秒
    在這里插入圖片描述
  2. 去Nexus網頁上看看,如下圖,此時已經緩存了不少jar:
    在這里插入圖片描述

在B電腦上編譯構建項目(應該很快)

  1. 在B電腦做同樣的操作,此時Nexus上已緩存了編譯所需的jar包,編譯過程明顯變快,最終操作結果如下圖,僅用1分零8秒
    在這里插入圖片描述
  2. 看看nexus服務占用的資源,內存用了不少,如果沒加內存條,用自帶的2G內存估計會拖垮整個群暉,雖然容器可以限制內存,但是也會導致nexus進程頻繁的GC,依舊很卡,所以保障內存充足是很有必要的:
    在這里插入圖片描述
    至此,群暉DS218+部署maven私服的實戰就完成了,今后在家擼代碼算是有了穩定的私服,無需打理,隨時可用。

歡迎關注公眾號:程序員欣宸

微信搜索「程序員欣宸」,我是欣宸,期待與您一同暢游Java世界...
https://github.com/zq2599/blog_demos


免責聲明!

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



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