Nexus:一站式私有仓库管理(NuGet、Maven、npm、Docker)
我們在日常開發中經常需要使用到私有倉庫,比如 dotNET 中的 NuGet、Java 中的 Maven、前端的 npm,還有 Docker 鏡像,每一個私有倉庫各自管理,維護起來比較麻煩,而 Nexus 可以將其統一起來。
本文將介紹 Nexus 的安裝以及怎樣進行 NuGet 、Maven、npm 和 Docker 鏡像的管理。
環境
Nexus:3.29.2
NuGet:5.5.1
Maven:3.6.3
NPM:6.14.8
Docker:19.03.13
操作系統:CentOS 7
安裝
可以使用直接在服務器進行安裝或者使用 Docker 鏡像的方式安裝,本文采用 Docker 鏡像的方式安裝。
1、執行下面的命令進行容器的構建。
docker?run?-d?-p?8081:8081?-p?8082:8082?--name?nexus_8081?-v?/root/data/nexus:/nexus-data?--restart=always?sonatype/nexus3命令中的 -v /root/data/nexus:/nexus-data 是將 Nexus 的數據目錄映射到本地;
nexus 目錄需要給編輯的權限;
8082 端口的映射目的是為了推送 docker 鏡像。
2、執行下面命令開放端口。
firewall-cmd?--zone=public?--add-port=8081/tcp?--permanent firewall-cmd?--reload3、構建完后,需要等幾十秒到幾分鐘不等,程序有一個初始化的過程,然后訪問 http://ip:8081 ,可以出現下圖界面:
4、根據彈窗的提示在映射的目錄 /root/data/nexus 中找到 admin.password 中的內容就可以正常登錄了。NuGet
1、在 Repositories 功能中創建 NuGet 的私有倉庫 NuGetTest ,倉庫模板選擇 nuget(hosted) 。
2、在 VS2019 中創建一個 NugetTest 的類庫項目,在項目上點擊右鍵→打包,在項目的 bin/Debug 目錄中會生成 NugetTest.1.0.0.nupkg 文件。
3、點擊「admin」→「NuGet API Key」,在該功能界面獲取 key ,這個 key 在推送 NuGet 包時需要用到。
4、將 nuget.exe 程序文件也放到 bin/Debug 目錄中,然后打開命令行進入到該目錄,執行下面命令進行包的推送。
nuget.exe?push?NugetTest.1.0.0.nupkg?dab3d4df-1eec-36e0-9b75-09b5b4b0ac41?-source?http://10.211.55.6:8081/repository/NuGetTest推送成功如下圖:
5、在 VS2019 中的 NuGet 包管理器中添加源。
6、在引用時選擇添加的 NuGetTest 源,如下圖:
Maven
1、在 Repositories 功能中創建 Maven 的私有倉庫 MavenTest ,倉庫模板選擇 maven(hosted),Deployment policy 需要設置為 Allow redeply,否則在推送時會報 400 的錯誤。
2、在 Maven 的配置文件 /apache-maven-3.6.3/conf/settings.xml 中的 Servers 節點添加 Server 配置,如下:
<server><id>releases</id><username>test</username><password>000000</password> </server>username 和 password 是在 Nexus 中創建的測試賬戶;
id 需要和 Maven 項目中的 pom.xml ?文件中配置的 id 一致。
3、在 IntelliJ IDEA 中創建 Maven 項目 MavenTest,在項目中的 pom.xml 文件中添加如下內容:
<distributionManagement><repository><id>releases</id><name>releases</name><url>http://10.211.55.6:8081/repository/MavenTest/</url></repository> </distributionManagement>id:和上面的 settings.xml ?文件中的 id 一致即可;
url:在 Nenux 中創建的 Maven 倉庫的地址。
4、因為倉庫創建的是 Release 版本的,如果 pom.xml 文件的 version 中包含 SNAPSHOT ,需要刪除,否則在推送時會報 400 的錯誤。
5、在 IDEA 工具的 Maven 模塊中進行 depoly 。
6、推送成功后,在 Nexus 中可以看到如下內容:
7、創建一個 spring boot 的項目,并修改 pom.xml 文件,在 dependencies 節點添加依賴,并添加 repositories 配置,如下:
<dependencies><dependency><groupId>org.example</groupId><artifactId>MavenTest</artifactId><version>1.0</version></dependency> </dependencies> <repositories><repository><id>releases</id><name>releases</name><url>http://10.211.55.6:8081/repository/MavenTest/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository> </repositories>8、在 IDEA 中的 build 模塊中進行同步就可以將 maven 包拉取到項目中。
NPM
1、在 Repositories 功能中創建 npm 的私有倉庫 NpmTest ,倉庫模板選擇 npm(hosted),Deployment policy 需要設置為 Allow redeply,否則在推送時會報 400 的錯誤。
2、使用 vue 創建一個項目 nexus-test 。
3、使用下面命令進行本地注冊,后面的地址為創建的 npm 私有庫的地址。
npm?config?set?registry?http://10.211.55.6:8081/repository/NpmTest/4、想要將自己的 npm 包推送到私有倉庫中,需要先使用下面的命令進行登錄。
npm?login?–registry=http://10.211.55.6:8081/repository/NpmTest/5、修改 vue 項目根目錄中的 package.json 文件,將 private 設置為 false ,版本號 version 根據需要進行修改。
6、在 Nexus 的 Realms 模塊進行設置,將 npm Bearer Token Realm 選到右邊的 Active 欄中,此處不設置,在推送時會出現 401 的錯誤。
7、執行下面命令進行包的推送:
npm?publish?--registry=http://10.211.55.6:8081/repository/NpmTest8、創建一個新的 vue 項目 nexus-test1 來進行私有倉庫的使用,先進行倉庫地址的注冊。
npm?config?set?registry?http://10.211.55.6:8081/repository/NpmTest/9、執行 npm install nexus-test 進行包的安裝,安裝成功如下圖:
Docker
1、在 Repositories 功能中創建 docker 的私有倉庫 DockerTest ,倉庫模板選擇 docker(hosted) 。
勾選 http,設置端口為 8082 ,此處的端口為創建 Nexus 容器時設置的 8082 端口?;
勾選允許匿名拉取鏡像;
勾選運行客戶端通過 API 訪問。
2、在 Nexus 的 Realms 模塊進行設置,將 Docker Bearer Token Realm 選到右邊的 Active 欄中。
3、在 CentOS 7 系統中安裝 Docker ,然后再 /etc/docker/ 目錄中創建 daemon.json 文件,內容如下:
{"insecure-registries":?["10.211.55.6:9999"] }4、執行下面命令進行配置的加載。
systemctl?daemon-reload systemctl?restart?docker5、在 root 目錄中創建 nexus-docker 目錄,目錄中創建 Dockerfile 文件用來構建一個新的鏡像,內容如下:
FROM?nginx:latest COPY?.?/usr/share/nginx/html/ EXPOSE?80 CMD?["nginx",?"-g",?"daemon?off;"]6、執行下面命令進行鏡像的構建和推送到服務端。
#?構建鏡像 docker?build?-t?nexus-docker?. #?將鏡像?tag?成服務端的地址 docker?tag?nexus-docker-test:latest?10.211.55.6:8082/nexus-docker-test:latest #?進行登錄? docker?login?-u?test?-p?000000?10.211.55.6:8082 #?推送鏡像 docker?push?10.211.55.6:8082/nexus-docker-test:latest操作成功如下圖所示:
7、使用鏡像的時候,只要服務器進行了第三步中的地址注冊,就可以使用 docker pull 10.211.55.6:8082/nexus-docker-test:latest 進行鏡像拉取。
希望本文對您有所幫助!
總結
以上是生活随笔為你收集整理的Nexus:一站式私有仓库管理(NuGet、Maven、npm、Docker)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .NET 5 部署在docker上运行
- 下一篇: 程序员过关斩将--领导说我的类的职责不单