Docker 環境下搭建nexus私服


一、安裝docker

1、腳本安裝

本機環境CentOS7,用戶為root

下載腳本到工作目錄
curl -fsSL https://get.docker.com -o get-docker.sh
執行腳本
sudo sh get-docker.sh

執行完會自動退出shell,需要重新登錄。

二、安裝docker-compose(可選)

1、腳本安裝
安裝docker-compose的可執行命令到/usr/local/bin
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

增加可執行權限
sudo chmod +x /usr/local/bin/docker-compose

不出意外,本地網絡是下載不動的...

可以嘗試 Github手動下載,或者開加速器。下載完成后copy到/usr/local/bin,然后增加可執行權限

三、啟動docker

service docker start
或
systemctl start docker

四、拉取鏡像

1、查找鏡像
docker search nexus

一般安裝star數最多的版本,目前最新是sonatype/nexus3

2、拉取鏡像
docker pull sonatype/nexus3

五、利用docker啟動容器(五或六任選其一)

1、最簡單的方式:
docker run -p 8081:8081 --name nexus sonatype/nexus3
2、指定數據卷,防止每次啟動容器,容器里的數據丟失,實現容器和虛擬機數據共享。
如果有容器和下面要創建的容器同名的話,先刪除
docker rm <container_name>

指定虛擬機與容器共享的文件夾
mkdir /usr/local/docker/nexus/nexus-data

啟動容器
docker run -p 8081:8081 --name nexus -v /usr/local/docker/nexus/nexus-data:/nexus-data snoatype/nexus3
指定數據卷后啟動,可能會報一些權限錯誤,導致啟動不起來。可能會需要修改文件夾權限
chmod 777 /usr/local/docker/nexus/nexus-data

六、利用docker-compose啟動nexus容器(五或六任選其一)

1、創建docker-compose.yml
mkdir /usr/local/docker
cd /usr/local/docker
vi docker-compose.yml
docker-compose.yml內容如下:
version: "3.7"
services:
  nexus:
    restart: "no" 
    image: sonatype/nexus3
    container_name: nexus
    ports:
      - 8081:8081 
    volumes:
      - /usr/local/docker/nexus/nexus-data:/nexus-data

version : 指定docker-compose語法版本,版本不同,支持的docker也不同

restart

services : 多種服務的根節點

nexus : 服務名隨意起,代表要創建的服務

restart : 容器的重啟策略,有no、always、on-failure、
unless-stopped四種可選值。

image : 容器依據的鏡像

container_name : 容器名

ports : 端口

volumes : 數據卷

注意:yml文件縮進必須用空格

七、訪問nexus

1、打開瀏覽器,訪問 http://<host address>:8081/
2、管理員登錄密碼在 /usr/local/docker/nexus/nexus-dataadmin開頭的文件中,將其拷貝輸入即可。
3、登錄之后會要求修改密碼,按要求修改即可。

八、項目發布到nexus的倉庫

1、首先修改maven的setting.xml文件,添加用戶信息,以便jar包上傳私服時進行身份認證,修改內容如下:
<servers>
    <server>
          <id>maven-releases</id>
          <username>admin</username>
          <password>112233</password>
    </server>
    <server>
      <id>maven-snapshots</id>
      <username>admin</username>
      <password>112233</password>
    </server>
</servers>

id : 為nexus的倉庫名稱,

username : nexus用戶名

password : nexus密碼

2、創建maven項目,修改pom.xml

增加發布管理節點

<distributionManagement>
        <snapshotRepository>
            <id>maven-snapshots</id>
            <name>maven-snapshots-repository</name>
            <url>http://192.168.172.141:8081/repository/maven-snapshots/</url>
        </snapshotRepository>
        <repository>
            <id>maven-releases</id>
            <name>maven-releases-repository</name>
            <url>http://192.168.172.141:8081/repository/maven-releases/</url>
        </repository>
    </distributionManagement>

snapshotRepository : 快照倉庫

repository : 發行倉庫

id : 與上面的server的id一致

name : 隨便

url : 倉庫地址,從nexus中可以找到

3、項目打包發布

maven會根據<version/>中是否含有SANPSHOT來選擇是發布到快照倉庫,還是發行版倉庫

項目打包
mvn clean package -Dmaven.test.skip=true
項目發布
mvn deploy

運行完便可在nexus中看到自己的項目了。

九、jar包安裝到nexus私服

有時項目開發時,一些maven依賴下載不下來,一直報錯。這時,可以手動下載jar包,將其安裝到nexus私服,再從nexus解決依賴問題。下面以安裝kaptcha為例:

mvn deploy:deploy-file -DgroupId=com.google.code.kaptcha -DartifactId=kaptcha -Dversion=2.3 -Dpackaging=jar -Dfile=D:\kaptcha-2.3.2.jar -Durl=http://192.168.172.141:8081/repository/third/ -DrepositoryId=third

DgroupId : jar包的groupId

Dversion : jar包的版本

Dfile : jar包所在位置

Durl : 倉庫地址

DrepositoryId : 倉庫名

這里新建了名為third的第三方倉庫,注意要在setting.xml增加一個server節點,配置用戶名和密碼。同時要將third倉庫加到maven-public組中,因為第十步要依賴的是maven-public組。將 third加入maven-pulic組后,只要依賴maven-public,便可取到third中的jar包。

十、從nexus下載依賴

pom.xml中增加如下倉庫配置:

<repositories>
        <repository>
            <id>nexus</id>
            <name>Nexus Repository</name>
            <url>http://192.168.172.141:8081/repository/maven-public/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </repository>
    </repositories>
    <pluginRepositories>
        <pluginRepository>
            <id>nexus</id>
            <name>Nexus Plugin Repository</name>
            <url>http://192.168.172.141:8081/repository/maven-public/</url>
            <snapshots>
                <enabled>true</enabled>
            </snapshots>
            <releases>
                <enabled>true</enabled>
            </releases>
        </pluginRepository>
    </pluginRepositories>
可以看到 上面的url節點填寫的都是maven-public組的url,而maven-releases,maven-snapshots,third都包含在maven-public中,所以能取到三個倉庫的內容。


免責聲明!

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



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