CentOS7-Docker 搭建Maven私服


使用Docker搭建Maven私服

前言
本文主要介紹,使用Docker創建一個nexus私服,然后編寫一個Library,上傳到私服,然后使用demo工程依賴。

本文不對Maven、Nexus、私服等等相關名詞以及為什么要用它們進行解釋,僅僅作為筆者的一次實踐記錄,有什么不對的歡迎評論。

適合的讀者
適合讀此篇文章的人最好符合以下條件:

對maven有一定的認識
想搭建maven私服但是沒有經驗
對Docker有一定的使用經驗
環境
本文環境實施是在遠程Linux主機上面跑Nexus,然后本地進行開發測試。具體如下

遠程主機環境

系統:CentOs 7.X
OpenJDK:1.8.0_151
Maven 3.0.5
Docker 1.12.6
本地環境

系統:MacOs 10.12.6
OpenJDK 1.8.0_152
Maven 3.5.2
IntelliJ IDEA 2017.3.4
安裝Nexus
在遠程主機運行一下命令:

docker pull sonatype/nexus3

上面命令的意思是下載一個nexus3的鏡像

 

繼續執行:

docker run -d -p 8081:8081 --name nexus -v /root/nexus-data:/var/nexus-data --restart=always sonatype/nexus3

上面命令是指使用nexus3鏡像創建並啟動一個容器,然后指定暴露8081端口到對應主機的8081端口

將容器內部/var/nexus-data掛載到主機/root/nexus-data目錄。

如果沒有任何問題的話,Nexus應該是搭建成功了。

還可以用命令驗證容器是否安裝成功

[root@localhost ~]# docker inspect f264e5f1be41

 

 

 能夠拿到這個ip地址說明啟動是成功的。

這個時候我們訪問一下這個地址

[root@localhost ~]# curl 172.17.0.2:8081
curl: (7) Failed connect to 172.17.0.2:8081; Connection refused

拒絕連接,說明啟動還沒那么快。

關閉下防火牆

[root@localhost ~]# systemctl stop firewalld.service

看到如下界面,說明你的私服已經起來了

 

 

此時在瀏覽器輸入:http://ip:8081即可看到以下頁面:(ip為遠程主機的ip地址)

點擊右上方的 Sign In進行登錄,初始賬號密碼為 admin/admin123

這個時候登錄會報一個錯誤,初始密碼雖然是admin123,但是你就是死活登不上去,

Incorrect username or password, or no permission to use the application.

maven私服登錄的時候不能使用明文密碼,要使用密文密碼,

一般在你創建容器的目錄下,登錄窗口會有提示說你的密碼文件在哪個位置,

我這里是 /root/nexus-data/admin.password ,但是我進到這個目錄下,

發現並沒有,於是我進到容器里面找,終於被我找到了。

docker exec -it ae0913c1c81c bash
cd /nexus-data/
cat admin.password
c481f097-4a88-4ad4-a742-0f2a12c0e2da

c481f097-4a88-4ad4-a742-0f2a12c0e2dabash-4.2$

一般會跟容器版本一起顯示,截取前面部分就是你的maven私服密碼,

至此,登錄成功,登錄成功后,會提示讓你修改密碼,並且勾選匿名訪問。

 

 

 

Nexus會幫我們創建了幾個倉庫:

 

可以看到默認情況下Nexus會幫我們創建了幾個倉庫,仔細觀察紅色框住的地方,里面有幾種倉庫的類型,解釋如下:

proxy 遠程倉庫的代理,比如說nexus配置了一個central repository的proxy,當用戶向這個proxy請求一個artifact的時候,會現在本地查找,如果找不到,則會從遠程倉庫下載,然后返回給用戶。
hosted 宿主倉庫,用戶可以把自己的一些倉庫deploy到這個倉庫中
group 倉庫組,是nexus特有的概念,目的是將多個倉庫整合,對用戶暴露統一的地址,這樣就不需要配置多個倉庫地址。
下面我們仔細看一下里面的一些倉庫。點擊maven-central倉庫:


 

可以看到是一個proxy類型的倉庫,他代理的遠程倉庫地址是https://repo1.maven.org/maven2/

后退,在進入maven-public查看: 

 

 

 

可以看到這是一個group類型的倉庫,里面包含了maven-releases/maven-snapshots/maven-central倉庫,意思是我們只需要在本地添加這個倉庫,則可以依賴到上述3個倉庫中的庫了。

准備工作
為了實現本地上傳代碼庫,並且實現依賴的示例,這里創建一個新的倉庫(也可以選用已經存在的倉庫)和一個用戶

創建倉庫,點擊Create repository,然后選擇maven2(hosted)然后輸入倉庫名稱(reason-release)。在version policy中選擇這個倉庫的類型,這里選擇release,在Deployment policy中選擇Allow redeploy(這個很重要).

 

選擇好之后點擊創建,

創建成功如下:

 

 

創建用戶

點擊左側菜單欄的Users菜單,然后點擊Create local user.我這里創建了一個用戶,賬號密碼都是:jiangqiayun

 

 本地計算機maven的settings.xml

 

<?xml version="1.0" encoding="utf-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">  
  <localRepository>D:/apache-maven-3.6.1/localRepository</localRepository>  
  <pluginGroups></pluginGroups>  
  <proxies></proxies>  
  <servers>
    <server>
        <id>reason</id>
        <username>jiangqiyuan</username>
        <password>jiangqiyuan</password>
    </server>
  </servers>  
  </mirrors>  
  <profiles></profiles>
</settings>

 

創建一個maven項目reason-test測試下

pom.xml

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.reason</groupId>
  <artifactId>reason-test</artifactId>
  <version>0.0.1-RELEASE</version>
  <packaging>jar</packaging>
  <!--指定倉庫地址-->
    <distributionManagement>
        <repository>
            <!--此名稱要和.m2/settings.xml中設置的ID一致-->
            <id>reason</id>
            <url>http://192.168.56.200:8081/repository/reason-release/</url>
        </repository>
    </distributionManagement>

    <build>
        <plugins>
            <!--發布代碼Jar插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-deploy-plugin</artifactId>
                <version>2.7</version>
            </plugin>
            <!--發布源碼插件-->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-source-plugin</artifactId>
                <version>2.2.1</version>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals>
                            <goal>jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>

 

注意這里版本號不能選擇默認的,默認創建的是開發版本的版本號,發布的時候一定要改成0.0.1-RELEASE不然打包會出問題

 

 

默認是0.0.1-SNAPSHOT 把后面的英文單詞改一下0.0.1-RELEASE 或者其他版本號

 

 

使用 mvn deploy

至此測試成功,去maven私服看一下

 

 


免責聲明!

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



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