Nexus作爲一個強大的本地私倉,用Maven的人都知道,在這裏就不做詳細的介紹了,有興趣的可以去了解下。
最近換了新的工作環境,基本上什麼基建都沒有(除了技術哈哈),需要獨立在本地環境部署一個Nexus服務,而且nexus也升級到了nexus3版本,所以這個任務就落到我身上了。
原本的Nexus部署方式過於麻煩,我們要的用Nexus提供的服務,並不是要做太大的改動。
因此我想到了用Docker的部署方式,方便,快捷…
此文同時在簡書發佈:https://www.jianshu.com/p/998c9e57fc48
此文同時在CSDN發佈:https://blog.csdn.net/nthack5730/article/details/84347849
轉載要加原文鏈接!謝謝支持!
前置準備
服務器或主機一臺
- 廢話了Docker CE
- 不知道Docker或者沒裝的朋友可以去Docker官網瞭解下- 確保
8081
端口沒被佔用,如果佔用了,下面的命令中會告訴大家怎麼修改到其他端口
1. 獲取Nexus3鏡像
首先,先
獲取nexus3鏡像
,雖然docker在本地找不到對應鏡像的時候會去docker hub找對應的鏡像。但是還是不建議直接run鏡像(可能是代碼潔癖)。
運行下面的命令,從中央倉庫拉取一個nexus3
的鏡像:
docker image pull sonatype/nexus3
Nexus3鏡像大小是500M左右,等等吧~~
上面這個是官方的鏡像,如果想用別的也可以docker search nexus
看看有沒有想用的,將上面命令中sonatype/nexus3
改爲你想要的鏡像
拉取完成之後,通過下面這條命令可以查看所有的鏡像:
docker image ls
2. 運行Nexus3鏡像,建立容器
在docker守護線程(後臺)運行
nexus3
鏡像,建立一個容器,並映射容器8081
端口到宿主機8081
端口,同時設置容器名稱爲nexus3
建議新手先別急着運行這條命令,看看下面對這條命令的解釋。
docker run -d -p 8081:8081 --name nexus3 --restart=always sonatype/nexus3
先解釋下這條命令:
-d
:表示在docker守護線程
運行這個鏡像;
-p
:表示綁定端口,前面的端口表示宿主機端口
,後面的表示容器端口
,如果宿主機的8081
端口已經被佔用了,那麼可以改爲8082:8081
,爲什麼後面的是8081
端口?這是Nexus服務自己設定的,可以修改,但是跑docker的話沒必要了,下面都是以8081
爲nexus的端口;
--restart=always
:這個指定docker重啓啓動容器
,當服務器或者docker進程重啓之後,nexus容器
會在docker守護進程
啓動後由docker守護進程啓動容器,容器的重啓策略很多,大家可以自己去看看對應的資料;
--name <container-name>
:這裏是指定了容器
建立後的名稱;
最後面的sonatype/nexus3
是鏡像名
。
3. 檢查nexus3運行情況
Nexus官方提供了檢查接口,ping-pong…
curl -u admin:admin123 http://localhost:8081/service/metrics/ping
nexus3初次運行需要幾分鐘,不一定馬上啓動馬上響應
上面的用戶名和密碼根據自己本機的用戶名密碼修改即可
得到pong
響應即表示nexus3啓動完成
4. 訪問nexus服務頁面
以服務端口爲8081
爲例,訪問:http://{host}:8081/
即可進入nexus
其中host
爲服務器的地址,如果是本機
,則IP改爲localhost
。
5. 管理Nexus容器
運行之後使用docker container ls
查看你的容器,記住容器名,這就是上面爲什麼我們要命名容器名爲:nexus3
要停止
、啓動
、重啓
Nexus,是通過容器來管理的:start
、stop
、restart
docker container start nexus3
docker container stop nexus3
docker container restart nexus3
並不是run鏡像!!!!!並不是run鏡像!!!!!
如果每次都run
鏡像的話,那麼每次run
都會建立一個新容器、卷
,剛學docker的時候踩過的坑。???
附:設置nexus容器自動啓動
很多朋友可能一開始就run
了鏡像,沒有設置好docker的容器自動啓動,只要跑下面的命令更新下重啓策略就好:
docker update --restart=always nexus3
語法是:
docker update <policy> <container-name>
相關的策略還有很多,有興趣的朋友可以去docker官網找找。
Nexus到此部署完成,整個過程不包下載時間的話10分鐘都不到。是不是很方便呢?期待大家點個贊喲!謝謝大家支持!