<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Nexus:一站式私有倉(cāng)庫(kù)管理(NuGet、Maven、npm、Docker)

          共 5970字,需瀏覽 12分鐘

           ·

          2021-03-03 23:01

          我們?cè)谌粘i_(kāi)發(fā)中經(jīng)常需要使用到私有倉(cāng)庫(kù),比如 dotNET 中的 NuGet、Java 中的 Maven、前端的 npm,還有 Docker 鏡像,每一個(gè)私有倉(cāng)庫(kù)各自管理,維護(hù)起來(lái)比較麻煩,而 Nexus 可以將其統(tǒng)一起來(lái)。

          本文將介紹 Nexus 的安裝以及怎樣進(jìn)行 NuGet 、Maven、npm 和 Docker 鏡像的管理。

          環(huán)境

          • Nexus:3.29.2
          • NuGet:5.5.1
          • Maven:3.6.3
          • NPM:6.14.8
          • Docker:19.03.13
          • 操作系統(tǒng):CentOS 7

          安裝

          可以使用直接在服務(wù)器進(jìn)行安裝或者使用 Docker 鏡像的方式安裝,本文采用 Docker 鏡像的方式安裝。

          1、執(zhí)行下面的命令進(jìn)行容器的構(gòu)建。

          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 的數(shù)據(jù)目錄映射到本地;
          • nexus 目錄需要給編輯的權(quán)限;
          • 8082 端口的映射目的是為了推送 docker 鏡像。

          2、執(zhí)行下面命令開(kāi)放端口。

          firewall-cmd --zone=public --add-port=8081/tcp --permanent
          firewall-cmd --reload

          3、構(gòu)建完后,需要等幾十秒到幾分鐘不等,程序有一個(gè)初始化的過(guò)程,然后訪問(wèn) http://ip:8081 ,可以出現(xiàn)下圖界面:

          4、根據(jù)彈窗的提示在映射的目錄 /root/data/nexus 中找到 admin.password 中的內(nèi)容就可以正常登錄了。

          NuGet

          1、在 Repositories 功能中創(chuàng)建 NuGet 的私有倉(cāng)庫(kù) NuGetTest ,倉(cāng)庫(kù)模板選擇 nuget(hosted) 。

          2、在 VS2019 中創(chuàng)建一個(gè) NugetTest 的類庫(kù)項(xiàng)目,在項(xiàng)目上點(diǎn)擊右鍵→打包,在項(xiàng)目的 bin/Debug 目錄中會(huì)生成 NugetTest.1.0.0.nupkg 文件。

          3、點(diǎn)擊「admin」→「NuGet API Key」,在該功能界面獲取 key ,這個(gè) key 在推送 NuGet 包時(shí)需要用到。

          4、將 nuget.exe 程序文件也放到 bin/Debug 目錄中,然后打開(kāi)命令行進(jìn)入到該目錄,執(zhí)行下面命令進(jìn)行包的推送。

          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、在引用時(shí)選擇添加的 NuGetTest 源,如下圖:

          Maven

          1、在 Repositories 功能中創(chuàng)建 Maven 的私有倉(cāng)庫(kù) MavenTest ,倉(cāng)庫(kù)模板選擇 maven(hosted),Deployment policy 需要設(shè)置為 Allow redeply,否則在推送時(shí)會(huì)報(bào) 400 的錯(cuò)誤。

          2、在 Maven 的配置文件 /apache-maven-3.6.3/conf/settings.xml 中的 Servers 節(jié)點(diǎn)添加 Server 配置,如下:

          <server>
            <id>releases</id>
            <username>test</username>
            <password>000000</password>
          </server>
          • username 和 password 是在 Nexus 中創(chuàng)建的測(cè)試賬戶;
          • id 需要和 Maven 項(xiàng)目中的 pom.xml  文件中配置的 id 一致。

          3、在 IntelliJ IDEA 中創(chuàng)建 Maven 項(xiàng)目 MavenTest,在項(xiàng)目中的 pom.xml 文件中添加如下內(nèi)容:

          <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 中創(chuàng)建的 Maven 倉(cāng)庫(kù)的地址。

          4、因?yàn)閭}(cāng)庫(kù)創(chuàng)建的是 Release 版本的,如果 pom.xml 文件的 version 中包含 SNAPSHOT ,需要?jiǎng)h除,否則在推送時(shí)會(huì)報(bào) 400 的錯(cuò)誤。

          5、在 IDEA 工具的 Maven 模塊中進(jìn)行 depoly 。

          6、推送成功后,在 Nexus 中可以看到如下內(nèi)容:

          7、創(chuàng)建一個(gè) spring boot 的項(xiàng)目,并修改 pom.xml 文件,在 dependencies 節(jié)點(diǎn)添加依賴,并添加 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 模塊中進(jìn)行同步就可以將 maven 包拉取到項(xiàng)目中。

          NPM

          1、在 Repositories 功能中創(chuàng)建 npm 的私有倉(cāng)庫(kù) NpmTest ,倉(cāng)庫(kù)模板選擇 npm(hosted),Deployment policy 需要設(shè)置為 Allow redeply,否則在推送時(shí)會(huì)報(bào) 400 的錯(cuò)誤。

          2、使用 vue 創(chuàng)建一個(gè)項(xiàng)目 nexus-test 。

          3、使用下面命令進(jìn)行本地注冊(cè),后面的地址為創(chuàng)建的 npm 私有庫(kù)的地址。

          npm config set registry http://10.211.55.6:8081/repository/NpmTest/

          4、想要將自己的 npm 包推送到私有倉(cāng)庫(kù)中,需要先使用下面的命令進(jìn)行登錄。

          npm login –registry=http://10.211.55.6:8081/repository/NpmTest/

          5、修改 vue 項(xiàng)目根目錄中的 package.json 文件,將 private 設(shè)置為 false ,版本號(hào) version 根據(jù)需要進(jìn)行修改。

          6、在 Nexus 的 Realms 模塊進(jìn)行設(shè)置,將 npm Bearer Token Realm 選到右邊的 Active 欄中,此處不設(shè)置,在推送時(shí)會(huì)出現(xiàn) 401 的錯(cuò)誤。

          7、執(zhí)行下面命令進(jìn)行包的推送:

          npm publish --registry=http://10.211.55.6:8081/repository/NpmTest

          8、創(chuàng)建一個(gè)新的 vue 項(xiàng)目 nexus-test1 來(lái)進(jìn)行私有倉(cāng)庫(kù)的使用,先進(jìn)行倉(cāng)庫(kù)地址的注冊(cè)。

          npm config set registry http://10.211.55.6:8081/repository/NpmTest/

          9、執(zhí)行 npm install nexus-test 進(jìn)行包的安裝,安裝成功如下圖:

          Docker

          1、在 Repositories 功能中創(chuàng)建 docker 的私有倉(cāng)庫(kù) DockerTest ,倉(cāng)庫(kù)模板選擇 docker(hosted) 。

          • 勾選 http,設(shè)置端口為 8082 ,此處的端口為創(chuàng)建 Nexus 容器時(shí)設(shè)置的 8082 端口 ;
          • 勾選允許匿名拉取鏡像;
          • 勾選運(yùn)行客戶端通過(guò) API 訪問(wèn)。

          2、在 Nexus 的 Realms 模塊進(jìn)行設(shè)置,將 Docker Bearer Token Realm 選到右邊的 Active 欄中。

          3、在 CentOS 7 系統(tǒng)中安裝 Docker ,然后再 /etc/docker/ 目錄中創(chuàng)建 daemon.json 文件,內(nèi)容如下:

          {
             "insecure-registries": ["10.211.55.6:9999"]
          }

          4、執(zhí)行下面命令進(jìn)行配置的加載。

          systemctl daemon-reload
          systemctl restart docker

          5、在 root 目錄中創(chuàng)建 nexus-docker 目錄,目錄中創(chuàng)建 Dockerfile 文件用來(lái)構(gòu)建一個(gè)新的鏡像,內(nèi)容如下:

          FROM nginx:latest
          COPY . /usr/share/nginx/html/
          EXPOSE 80
          CMD ["nginx""-g""daemon off;"]

          6、執(zhí)行下面命令進(jìn)行鏡像的構(gòu)建和推送到服務(wù)端。

          # 構(gòu)建鏡像
          docker build -t nexus-docker .
          # 將鏡像 tag 成服務(wù)端的地址
          docker tag nexus-docker-test:latest 10.211.55.6:8082/nexus-docker-test:latest
          # 進(jìn)行登錄 
          docker login -u test -p 000000 10.211.55.6:8082
          # 推送鏡像
          docker push 10.211.55.6:8082/nexus-docker-test:latest

          操作成功如下圖所示:

          7、使用鏡像的時(shí)候,只要服務(wù)器進(jìn)行了第三步中的地址注冊(cè),就可以使用 docker pull 10.211.55.6:8082/nexus-docker-test:latest 進(jìn)行鏡像拉取。

          希望本文對(duì)您有所幫助!

          瀏覽 78
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  999久久| 婷婷五月深深爱 | 玩弄吊带少妇性爱在线视频 | 国产一级片 | 色老板在线永久免费视频 |