Docker 環境下搭建nexus私服

1、安裝docker

一、腳本安裝

本機環境CentOS7,用戶爲roothtml

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

執行完會自動退出shell,須要從新登陸。git

2、安裝docker-compose(可選)

一、腳本安裝
安裝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

能夠嘗試 Github手動下載,或者開加速器。下載完成後copy到/usr/local/bin,而後增長可執行權限docker

3、啓動docker

service docker start
或
systemctl start docker

4、拉取鏡像

一、查找鏡像
docker search nexus

通常安裝star數最多的版本,目前最新是sonatype/nexus3shell

二、拉取鏡像
docker pull sonatype/nexus3

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

一、最簡單的方式:
docker run -p 8081:8081 --name nexus sonatype/nexus3
二、指定數據卷,防止每次啓動容器,容器裏的數據丟失,實現容器和虛擬機數據共享。
若是有容器和下面要建立的容器同名的話,先刪除
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

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

一、建立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 : 多種服務的根節點less

nexus : 服務名隨意起,表明要建立的服務curl

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

image : 容器依據的鏡像

container_name : 容器名

ports : 端口

volumes : 數據卷

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

7、訪問nexus

一、打開瀏覽器,訪問 http://<host address>:8081/
二、管理員登陸密碼在 /usr/local/docker/nexus/nexus-dataadmin開頭的文件中,將其拷貝輸入便可。
三、登陸以後會要求修改密碼,按要求修改便可。

8、項目發佈到nexus的倉庫

一、首先修改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密碼

二、建立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中能夠找到

三、項目打包發佈

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

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

運行完即可在nexus中看到本身的項目了。

9、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包。

10、從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中,因此能取到三個倉庫的內容。
相關文章
相關標籤/搜索