Docker搭建nexus,並實現上傳下拉依賴
目錄:
環境
Centos7.4
安裝docker
- 安裝詳細參考地址:博客
- 簡化步驟
- 卸載
yum list installed | grep docker
執行無任務信息,則直接跳到安裝
yum remove -y docker.x86_64 docker-client.x86_64 docker-common.x86_64
注意: 要複製自己對應docker版本
查詢卸載結果
yum list installed | grep docker
- 安裝
yum install -y docker
- 啓動docker
systemctl start docker
systemctl enable docker
- 查看docker是否啓動
systemctl status docker
- 卸載
使用docker安裝nexus
借鑑博客
博客:博客
安裝
-
查找鏡像
docker search nexus
-
選取使用次數較多是鏡像 拉取鏡像
docker pull sonatype/nexus3
-
查看拉取的鏡像
docker images
-
創建volume(如果直接用 -v /opt/nexus-data:/nexus-data,可能會存在權限問題)
docker volume create nexus-data
-
查看創建結果
docker volume inspect nexus-data
-
啓動nexus
docker run -d --name nexus3 \ --restart=always \ -p 8081:8081 \ -v nexus-data:/nexus-data \ sonatype/nexus3
-d 是後臺啓動
–name 是啓動容器名
–restart=always 意思docker被重啓,對應該容器也會被重啓
-p 宿主機端口映射(:前面是宿主機端口, :後面是容器端口)
-v 將容器某個目錄掛載到宿主機上面 nexus-data是上面配置好的宿主機掛載點,/nexus-data是容器對應路徑
sonatype/nexus3 是啓動的鏡像 -
開放端口
- 開放安全組(對應阿里雲,騰訊雲後臺,添加安全組)
- 開放防火牆端口
- 關閉防火牆
systemctl stop firewalld
systemctl disable firewalld
- 開啓端口
systemctl restart firewalld
systemctl enable firewalld
firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
- 關閉防火牆
訪問web
- 訪問路徑: ip:8081,網上說默認的賬號是admin,密碼是admin123,實際新版本會隨機一個admin密碼
- 獲取正確密碼
上面路徑我們已經通過docker volume做了映射了,可以通過docker volume inspect nexus-data 查看真實機器路徑
cd /var/lib/docker/volumes/nexus-data/_data
cat admin.password
複製登陸
禁用 anonymous用戶訪問
這裏簡單介紹下幾種repository的類型:
- hosted,本地倉庫,通常我們會部署自己的構件到這一類型的倉庫。比如公司的第二方庫。
- proxy,代理倉庫,它們被用來代理遠程的公共倉庫,如maven中央倉庫。
- group,倉庫組,用來合併多個hosted/proxy倉庫,當你的項目希望在多個repository使用資源時就不需要多次引用了,只需要引用一個group即可
介紹我們用使用的倉庫
maven-central 配置中央倉庫,可以直向maven官方屬於代理類的倉庫
maven-releases 私人倉庫,用戶的正式版本的jar存放倉庫
maven-snapshots 私人倉庫, 用戶的快照版本jar存放倉庫
maven-public = maven-releases + maven-snapshots + maven-central
這裏可以單擊 上面maven-public ,查看內部配置
注意: 我也就是我們搭建私庫使用主要就是maven-public庫
通過idea上傳jar到nexus庫裏面
setting文件添加server
注意username是在ip:8081登陸賬號,password是在ip:8081登陸的密碼
<servers>
<!--maven-public倉庫對應賬號密碼設置-->
<server>
<id>nexus-public</id>
<username>admin</username>
<password>123456789</password>
</server>
<!--maven-releases倉庫對應賬號密碼設置-->
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>123456789</password>
</server>
<!--maven-snapshot倉庫對應賬號密碼設置-->
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>123456789</password>
</server>
</servers>
</servers>
項目pom文件添加配置
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://ip:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://ip:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意: 上面 id 要和 setting裏面配置 server下的id一樣,要不然就沒法調用對應賬號密碼
注意: 上面 id 要和 setting裏面配置 server下的id一樣,要不然就沒法調用對應賬號密碼
注意: 上面 id 要和 setting裏面配置 server下的id一樣,要不然就沒法調用對應賬號密碼
url路徑可以通過web頁面複製過來
測試上傳
idea可以直接點擊 deploy
或者命令行
mvn deploy
如果你發佈是releases的jar,可能會報錯
解決方案:
選擇 Allow redeploy,記得保存
查詢是否發佈到私服上面去了
從私庫上面拉取jar包
配置方案
- 配置repository
- pom文件配置repository
- setting文件配置repository
- setting文件配置mirror
這裏要說下maven拉取jar順序
1、本地倉庫
2、maven settings profile中的repository;
3、pom.xml中profile中定義的repository;
4、pom.xml中的repositorys(定義多個repository,按定義順序找);
5、mirror
通過配置項目repositorys實現拉取
-
新建一個maven項目
-
項目裏面pom文件添加
<dependencies> <dependency> <groupId>com.demo</groupId> <artifactId>my-maven-demo</artifactId> <version>1.0</version> </dependency> </dependencies> <repositories> <repository> <id>nexus-public</id> <url>http://ip:8081/repository/maven-public/</url> </repository> </repositories>
拉取前刪除本地庫對應demo,jar包
點擊刷新maven項目
從私庫裏面拉取成功
通過pom.xml中profile中定義的repository拉取
- pom文件添加
<dependencies>
<dependency>
<groupId>com.demo</groupId>
<artifactId>my-maven-demo</artifactId>
<version>1.0</version>
</dependency>
</dependencies>
<profiles>
<profile>
<id>dev</id>
<repositories>
<repository>
<id>nexus-public</id>
<url>http://ip:8081/repository/maven-public/</url>
</repository>
</repositories>
</profile>
</profiles>
- 測試前清空本地倉庫
- 刷新項目
或者命令行運行 mvn clean install -P dev 刷新項目 - 拉取成功
從maven settings profile中的repository拉取jar
-
清空項目pom文件
-
修改maven setting文件,在setting文件添加profile配置
<profiles>
<profile>
<id>jdk-1.4</id>
<repositories>
<repository>
<!--這裏名字必須和上面maven-public server id一樣 -->
<id>nexus-public</id>
<name>Repository for JDK 1.4 builds</name>
<url>http://ip:8081/repository/maven-public/</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>jdk-1.4</activeProfile>
</activeProfiles>
- 清空本地倉庫
- idea刷新項目
- 本地倉庫結果
通過配置mirror拉取jar包
- 清空setting裏面 profiles設置
- 添加mirror
<mirror>
<!--這裏必須和server id 一樣-->
<id>nexus-public</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://ip:8081/repository/maven-public/</url>
</mirror>
- 清空本地倉庫
- 刷新項目
- 拉取結果