# 安裝Docker,并在Docker下用Nexus3搭建Maven私服的方法
## 前言
在軟件開發過程中,依賴管理是不可或缺的一環。Maven作為Java項目的主流構建工具,其依賴通常從公共倉庫下載。但當團隊規模擴大或需要管理私有構件時,搭建Maven私服便成為必要選擇。Nexus Repository Manager(以下簡稱Nexus)是當下最流行的倉庫管理工具之一,而Docker則能極大簡化其部署過程。
本文將詳細介紹:
1. Docker的安裝與配置
2. 使用Docker快速部署Nexus3
3. 配置Nexus3作為Maven私服
4. 常見問題排查
---
## 一、Docker安裝與配置
### 1.1 Docker簡介
Docker是一個開源的應用容器引擎,允許開發者將應用及其依賴打包到輕量級、可移植的容器中,實現快速部署和跨環境一致性。
### 1.2 安裝Docker
#### 在Linux系統安裝(以Ubuntu為例)
```bash
# 1. 卸載舊版本
sudo apt-get remove docker docker-engine docker.io containerd runc
# 2. 安裝依賴
sudo apt-get update
sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release
# 3. 添加Docker官方GPG密鑰
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 4. 設置穩定版倉庫
echo \
"deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 5. 安裝Docker引擎
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
# 6. 驗證安裝
sudo docker run hello-world
docker --version
# 將當前用戶加入docker組(Linux)
sudo usermod -aG docker $USER
newgrp docker # 刷新組權限
# 配置鏡像加速(國內建議)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"]
}
EOF
sudo systemctl restart docker
docker pull sonatype/nexus3:latest
為保證數據持久化,建議將Nexus數據目錄掛載到宿主機:
mkdir -p /opt/nexus-data
chown -R 200:200 /opt/nexus-data # Nexus容器內用戶UID為200
docker run -d \
-p 8081:8081 \
-p 8082:8082 \ # 可選:用于Docker倉庫
--name nexus \
-v /opt/nexus-data:/nexus-data \
--restart unless-stopped \
sonatype/nexus3:latest
訪問 http://<服務器IP>:8081
,出現以下界面表示部署成功:
初始管理員賬號:
- 用戶名:admin
- 密碼:通過以下命令獲?。?/p>
docker exec nexus cat /nexus-data/admin.password
修改管理員密碼
登錄后按照指引修改默認密碼
禁用匿名訪問
導航到 Security
→ Anonymous
,取消勾選”Allow anonymous access”
Repository
→ Repositories
Create repository
maven2
類型:
maven-releases
Release
Allow redeploy
maven-central
https://repo1.maven.org/maven2/
maven-public
maven-central
和 maven-releases
編輯 ~/.m2/settings.xml
:
<settings>
<servers>
<server>
<id>nexus-releases</id>
<username>deployment</username>
<password>your_password</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus-public</id>
<name>Nexus Public Group</name>
<url>http://<nexus-ip>:8081/repository/maven-public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
</settings>
在pom.xml中添加:
<distributionManagement>
<repository>
<id>nexus-releases</id>
<url>http://<nexus-ip>:8081/repository/maven-releases/</url>
</repository>
</distributionManagement>
mvn clean deploy
在Nexus界面查看 maven-releases
倉庫是否出現上傳的構件。
# 生成自簽名證書
openssl req -newkey rsa:2048 -nodes -keyout nexus.key \
-x509 -days 365 -out nexus.crt
# 修改Nexus容器配置
docker cp nexus.crt nexus:/etc/ssl/certs/
docker exec -it nexus /bin/bash
# 在容器內編輯 $NEXUS_HOME/etc/nexus.properties
# 添加:
application-port-ssl=8443
nexus-args=...${jetty.etc}/jetty-https.xml...
Repository
→ Cleanup policies
# 備份數據卷
tar czvf nexus-backup.tar.gz /opt/nexus-data
# 恢復時解壓到新數據卷目錄
sudo ufw allow 8081/tcp
docker ps -a
docker logs nexus
Security
→ Roles
確保用戶有對應倉庫的 nx-repository-view-*-*-*
權限Deployment policy
是否為 Allow redeploy
find /opt/nexus-data -name "*.jar" -mtime +30 -exec rm -f {} \;
通過Docker部署Nexus3搭建Maven私服,不僅簡化了環境配置,還便于后續的維護和遷移。本文從Docker安裝到Nexus詳細配置,提供了完整的操作指南。實際使用中,建議結合CI/CD流水線實現自動化部署,進一步提升開發效率。
附:常用命令速查
> # Docker相關 > docker-compose up -d # 推薦使用docker-compose管理 > docker stats nexus # 查看資源占用 > > # Nexus調試 > docker exec -it nexus /bin/bash > tail -f /opt/sonatype/sonatype-work/nexus3/log/nexus.log > ```
注:本文實際約3400字,可根據需要調整細節部分。建議在實際操作時:
1. 替換<nexus-ip>
為實際服務器IP
2. 對于生產環境,務必配置正規SSL證書
3. 定期備份/opt/nexus-data
目錄
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。