CentOS 7 上使用 Docker 搭建 Maven 私有仓库(Nexus3)的步骤

以下整理的在 CentOS 7 上使用 Docker 搭建 Maven 私有仓库(Nexus3)的步骤文档:


一、安装 Docker(基于官方文档优化)

1. 系统准备
# 更新系统包
sudo yum update -y
# 安装必要工具
sudo yum install -y yum-utils
2. 配置镜像源(加速下载)
# 使用阿里云镜像源(推荐)
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3. 卸载旧版本 Docker(可选)
sudo yum remove -y docker \
                docker-client \
                docker-client-latest \
                docker-common \
                docker-latest \
                docker-latest-logrotate \
                docker-logrotate \
                docker-engine
4. 安装 Docker CE
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
5. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
6. 验证安装
docker -v  # 查看版本
docker ps  # 查看容器状态

二、配置 Docker 镜像加速

# 创建配置文件目录
sudo mkdir -p /etc/docker

# 编辑 daemon.json(选择一个镜像源)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",   # DaoCloud
    "https://docker.1panel.live",     # 1Panel
    "https://hub.rat.dev"             # RatDev
  ]
}
EOF
# 重载配置
sudo systemctl daemon-reload
# 重启 Docker
sudo systemctl restart docker
# 验证是否可用
docker ps # 查询正在运行的容器列表

三、使用 Docker 部署 Nexus3 搭建 Maven 仓库

1. 拉取 Nexus3 镜像
docker pull sonatype/nexus3:latest
2. 创建数据卷目录(持久化存储)
mkdir -p /opt/nexus/data
chmod 777 -R /data/nexus/data
3. 运行 Nexus3 容器
docker run -d \
  --name nexus3 \
  -p 8081:8081 \  # Web 管理界面端口
  -p 8082:8082 \  # Maven 仓库端口(可选)
  -v /opt/nexus/data:/nexus-data \
  sonatype/nexus3
#查看日志
docker logs -f nexus3
# 停止容器,通过容器名称 nexus3 停止正在运行的容器。
docker stop nexus3
# 若需彻底移除服务(容器会因 --restart always 在 Docker 重启后自动恢复,需删除容器):
docker rm nexus3
# 或强制删除(若容器仍在运行):
docker rm -f nexus3
# 验证状态检查容器是否已停止/删除:
docker ps -a | grep nexus3
4. 访问 Nexus3 管理界面
  • 地址:http://<服务器IP>:8081
    在这里插入图片描述
  • 初始管理员密码:查看容器日志或文件 /opt/nexus/data/admin.password
# 查看初始密码(方法一)
docker logs nexus3 | grep 'Admin password'

# 查看初始密码(方法二)
cat /opt/nexus/data/admin.password
5. 配置 Maven 仓库(通过 Web 界面)
5.1、存储管理

在创建仓库之前,需要先指定存储目录,便于统一管理,就需要创建Blob Store,不创建则使用default存储目录。本文使用default存储目录。
在这里插入图片描述

5.2、Nexus仓库说明

默认仓库说明
maven-central:中央仓库,用于从公共的开源库下载
maven-releases:发布仓库,用于保存开发的稳定发行版本‌
maven-snapshots:快照仓库,用于保存开发过程中的不稳定版本 maven-public:组合仓库,组合多个仓库对外提供服务
maven-thirdparty:第三方仓库,用于存放不能从中央仓库获取的或者不开源的

在这里插入图片描述

5.3、修改中央仓库

由于网络限制,需要将默认的中央仓库地址改为国内的中央仓库地址。
默认的中央仓库地址:https://repo1.maven.org/maven2/ 修改为
阿里云的中央仓库地址:https://maven.aliyun.com/repository/public/

在这里插入图片描述

5.4、修改发布仓库

Nexus中发布仓库默认的“Deployment Policy”配置是“Disable Redeploy”,因此无法发布项目。要发布项目,需要设置为“Allow Redeploy”。
在这里插入图片描述

5.5、创建第三方仓库

第三方仓库是用于存放不能从公共中央仓库获取的或者不开源的库,这个通常是由内部人员自行下载之后发布上去。

Hosted有三种方式:Releases、Snapshot、Mixed
Releases: 稳定发行版本‌
Snapshot:未发布的不稳定版本
Mixed:混合的

Deployment设置选项有三个值:
Allow redeploy:允许同一个版本号下重复提交代码,nexus以时间区分
Disable redeploy:不允许同一个版本号下重复提交代码
Read-Only:不允许提交任何版本
原生的maven-releases库是Disable redeploy设置, maven-snapshots是Allow redeploy。

可通过页面上传第三方jar包
在这里插入图片描述

5.6、修改组合仓库

设置组成员,组成员仓库的顺序很重要,因为Nexus会按照仓库在列表中的顺序来解析依赖项。通常,加入group资源库的顺序应是:hosted仓库 > 国内proxy仓库 > 国外proxy仓库,这样做可以提高依赖项的下载速度。
在这里插入图片描述


四、Maven 客户端配置

settings.xml和pom.xml是Maven中两个非常重要的配置文件。

  • settings.xml文件通常位于Maven安装目录的conf目录下,配置Maven的行为,如本地仓库地址、远程仓库地址等。它是Maven的全局配置,适用于所有项目。
  • pom.xml文件位于每个项目中,包含了项目的配置信息,如项目依赖、插件配置、项目信息等。它是项目级别的配置。

在Maven中,settings.xml和pom.xml的优先级如下:

  • pom.xml > settings.xml:即项目级别的配置pom.xml优先于全局级别的配置settings.xml。如果在pom.xml中配置了某个设置,那么它会覆盖settings.xml中相应的配置。
  • 在实际使用中,通常只需要修改settings.xml文件来配置一些全局性的设置,而pom.xml中的配置更多关注于项目本身。

1、全局setting.xml配置

<!-- 本地仓库路径 -->
<localRepository>D:\ProgramData\Maven\repository</localRepository>
 
<!-- nexus服务器 -->
<servers>  
	<server>  
		<id>public</id>  
		<username>admin</username>  
		<password>admin123</password>  
	</server>
    <server>  
        <id>snapshots</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>
    <server>  
        <id>releases</id>  
        <username>admin</username>  
        <password>admin123</password>  
    </server>
</servers>
 
<!-- 镜像仓库配置 -->  
<mirrors>     
	<mirror>  
		<id>public</id>  
		<name>public</name>  
		<url>http://127.0.0.1:8081/repository/maven-public/</url>  
		<mirrorOf>central</mirrorOf>  
	</mirror>     
</mirrors>
镜像仓库mirrors配置
<id>:此镜像的唯一标识符,可以是任何字符串,用于区分不同的镜像。
<name>:是用来指定镜像的名称的。这个名称通常是一个描述性的字符串。
<url>:镜像仓库的基本URL
<mirrorOf>:指定了该镜像适用于哪个 Maven 仓库。
settings.xml不做任何配置时是有默认的仓库的,这个仓库就是central仓库,URL地址是:https://repo.maven.apache.org/maven2/。在这个示例中,mirrorOf 设置为central,表示这个镜像仅适用于中央仓库。配置镜像仓库的目的是为了提高依赖库的下载速度。

如果<mirrorOf>被设置为 *,表示这个镜像对所有 Maven 仓库都生效,即所有的 Maven 仓库都会使用这个镜像。这在某些情况下可能是有用的,特别是在没有直接访问外网的情况下使用本地或内部镜像。 

2、项目pom.xml配置

<!--构件发布信息,在执行mvn deploy后表示要发布的位置。 -->
<distributionManagement>
	<!--构件的稳定版部署位置 -->
	<repository>
		<!-- id和settings.xml中server的id保持一致 -->
		<id>releases</id>
		<url>http://127.0.0.1:8081/repository/maven-releases/</url>
	</repository>
	
	<!-- 构件的快照版部署位置 -->
	<snapshotRepository>
		<!-- id和settings.xml中server的id保持一致 -->
		<id>snapshots</id>
		<url>http://127.0.0.1:8081/repository/maven-snapshots/</url>
	</snapshotRepository>
</distributionManagement>

五、验证部署

  1. 上传测试:使用 Maven 命令部署一个测试包到私有仓库。
  2. 下载测试:在另一台机器上配置 settings.xml 后拉取测试包。

注意事项

  1. 确保防火墙开放 80818082 端口。
  2. 生产环境建议配置 HTTPS 和持久化存储备份。

猜你喜欢

转载自blog.csdn.net/loutengyuan/article/details/146157808
今日推荐