
個人親自錄制全套DevOps系列實戰教程:??手把手教你玩轉DevOps全棧技術??
(資料圖片僅供參考)
Maven私有倉庫,就不多說了,我們這里選用最新的Nexus3的3.17版本,平時公司使用的都是Nexus 2.x,新的3.x版本做了很多的升級,包括存儲方式等,
這里選用新版本的一個原因就是也想了解下新版本的變化。
參考官網:??https://help.sonatype.com/repomanager3/installation-and-upgrades/installation-methods??
# 此處我們選擇3.17版本,因為3.18版本采用的是red hat,3.18之前是centosdocker pull sonatype/nexus3:3.17.0
??注意:?
?宿主機需提前創建/docker/nexus3/data目錄,用于和容器的數據目錄進行映射,
# 值得注意的是nexus3容器內會使用200這個用戶去執行操作# 所以/docker/nexus3/data需要給200授權,為了方便我使用的是777權限。chmod -R 777 /docker/nexus3/data
# 在/docker/nexus3目錄創建vi docker-compose.ymlversion: "3"services: nexus3: image: "sonatype/nexus3:3.17.0" restart: always container_name: "nexus3" hostname: "nexus3" environment: - NEXUS_CONTEXT=nexus # 默認不指定上下文為根/,這是和nexus2不同的地方 ports: - "9081:8081" networks: - "exist-net-bloom" volumes: - "/docker/nexus3/data:/nexus-data" - "/etc/timezone:/etc/timezone:ro" - "/etc/localtime:/etc/localtime:ro"networks: exist-net-bloom: external: name: devops
查看密碼:進入容器的cat /nexus-data/admin.password文件中查看。
# 入口:# http://10.10.1.199:9081/nexus/ # 注意如果去掉NEXUS_CONTEXT=nexus的設置,入口就是http://10.10.1.199:9081/用戶名:admin
hosted:maven-releases、maven-snapshots,接收客戶端提交過來的依賴包(jar包,mvn deploy),也可從中心庫下載依賴包。在2.x老版本中還會有一個3th party庫,用來從第三方獲取jar包然后上傳到該庫中管理。proxy:maven-central,正常客戶端下載依賴包順序,優先查找hosted庫是否存在,不存在則通過proxy庫到中心庫查找并下載保存到本地倉庫。group:maven-public,這個倉庫就是前兩個的匯總,它包含所有倉庫的依賴包。
/mvnrepo/repo distributionManagement->repository->id相匹配 -- > nexus3 admin 123456 omv-releases admin 123456 omv-snapshots admin 123456 omv-profile omv-central http://10.10.1.199:9081/nexus/repository/maven-public/ true true aliyun aliyun Repository https://maven.aliyun.com/repository/public false omv-central-plugin http://10.10.1.199:9081/nexus/repository/maven-public/ true true omv-profile 指定的 的id對應的倉庫,就是如果要訪問屏蔽的倉庫,會被重定向到url指向的倉庫 -- > omv-mirror central https://maven.aliyun.com/repository/public
??關于中心倉庫:?
?通過鏡像方式重定向中心倉庫只是其中是一種方式,也可以在nexus的web頁面,直接將maven-central這個代理倉庫代理的中心倉庫改成我們期望的倉庫。
比如還可以在nexus中增加一個proxy的maven-cental,讓他直接代理阿里云倉庫,這樣上邊的鏡像到的url就可以直接使用自己的私服nexus地址了。
settings.xml中定義了拉取依賴的庫(私服和阿里云),那下邊我們來定義通過maven打包后部署jar包到哪個庫的配置,即怎么向nexus上傳分發。
,id要和這里的id一致 -- > xxx-RELEASE的包都會上傳到release庫 -- > omv-releases Releases http://10.10.1.199:9081/nexus/repository/maven-releases/ omv-snapshots Snapshot http://10.10.1.199:9081/nexus/repository/maven-snapshots/
問題:當我們打包deploy時會報權限問題答案:因為nexus設置了鑒權,所以需要授權,授權需要settings.xml中配置,id要和這里的id一致
關于loger error:通過nexus的日志,我們發現有一個ssl的請求超時,他是去訪問國外網站了,鑒于這個功能我們不使用,所以直接屏蔽掉
路徑:admin登錄->System->Capabilities->Outreach: Management->Disable
根據官方文檔描述這是一個從倉庫對外提供數據的插件,因為nexus3升級后不只是maven倉庫還可以做其他倉庫,比如docker,而這個功能看上去和maven沒什么關系。