Docker安装Maven私服Nexus3的实现步骤

 更新时间:2025年12月14日 09:17:53   作者:栗筝i  
本文主要介绍了Docker安装Maven私服Nexus3的实现步骤,可以帮助开发者搭建高效的依赖管理和分发环境,具有一定的参考价值,感兴趣的可以了解一下

在现代软件开发中,私有仓库是企业管理和分发内部依赖的重要工具,能够提高开发效率、加强依赖管理并确保构建的稳定性。Nexus Repository Manager 作为市场上常见的私服解决方案,不仅支持 Maven,还支持 npm、PyPI 等多种格式,为团队提供了统一的制品管理平台。

本文将介绍如何使用 Docker 快速部署 Maven 私服 Nexus3,帮助开发者搭建高效的依赖管理和分发环境,同时减少环境配置的复杂性和维护成本。通过 Docker 部署,您可以轻松实现版本化控制、灵活配置以及跨平台的便捷使用,是中小型团队和企业的理想选择。

1、背景知识

在研发的过程中,很多企业都会针对自身业务特点来定制研发一些工具类库,但是这些工具类库又不会对外公开,那如何在组织内部共享这些类库呢?一种很好的方式就是在公司内部搭建一套 Maven 私服仓库。

搭建 Maven 私服仓库可以提高项目构建和部署的效率、稳定性和安全性,同时方便管理内部开发的组件和私有库,比较适用于企业内部或者特定场景下的需求。

2、环境搭建

2.1、步骤一:下载 Nexus3 镜像

在服务器命令行输入如下命令,下载 Nexus3 镜像(视网络情况,可能需要耐心等待一会儿):

$ docker pull sonatype/nexus3

2.2、步骤二:查看 Nexus3 镜像

在服务器命令行输入如下命令,查看下载的 Nexus3 镜像。

$ docker images

可以看到,已经成功下载 Nexus3 镜像

2.3、步骤三:创建 Nexus3 挂载文件夹

在服务器命令行输入如下命令,创建 Nexus 的挂载文件夹:

$ mkdir /usr/local/nexus-data && chown -R 200 /usr/local/nexus-data

2.4、步骤四:启动 Nexus3 容器

在服务器命令行输入如下命令,启动 Nexus3 容器:

$ docker run -d -p 8081:8081 --name nexus -v /usr/local/nexus-data:/nexus-data --restart=always sonatype/nexus3

可以看到,在上述启动命令中,我们将 Nexus3 容器的 /nexus-data 目录映射到了宿主机的 /usr/local/nexus-data 目录。此时 Nexus3 容器运行过程中,在 /nexus-data 目录产生的文件和日志都会在宿主机的 /usr/local/nexus-data 目录中查看到。

Ps:Nexus3 默认启动需要至少 2G 内存,所以一些环境下为了避免占用过多内,可以采用下面参数限制其内存:

$ docker run -d -e "INSTALL4J_ADD_VM_PARAMS=-Xms128m -Xmx512m -XX:MaxDirectMemorySize=512m -Djava.util.prefs.userRoot=/nexus-data/javaprefs" -p 8081:8081 --name nexus -v /usr/local/nexus-data:/nexus-data sonatype/nexus3

2.5、步骤五:查看 Nexus3 容器启动状态

在服务器命令行输入如下命令,查看 Nexus3 容器启动状态:

$ docker ps

可以看到,Nexus3 容器启动成功,监听了 8081 端口。

3、环境配置

搭建完 Nexus3 环境后,我们还需要对其进行配置,具体配置的步骤如下所示。

3.1、步骤六:打开 Nexus3 页面

Nexus3 容器启动时监听的端口和宿主机端口都是 8081,所以,我们在浏览器地址栏输入 http://宿主机IP地址:8081 打开 Nexus3 页面:

3.2、步骤七:登陆 Nexus3 用户

点击 Nexus3 右上角的登录(Sign in),点击后会弹出如下图所示的提示框:

对于第一次登陆,初始密码的存放位置为 /nexus-data/admin.password,因为我们在启动 Nexus3 容器时,将 Nexus3 容器的 /nexus-data 目录映射到了宿主机的 /usr/local/nexus-data 目录,所以,我们在宿主机的 /usr/local/nexus-data 目录中也能够查询到 admin.password 文件。

$ cat /usr/local/nexus-data/admin.password 

此时,我们就查看到登录 Nexus3 的 admin 账号的密码为 13250a0a-1c02-498a-b15a-0a7aabad1add

将 admin 账号和对应的密码输入到提示框中,即可登录 Nexus3。

Ps:首次登录后会自动弹出完成必要设置的提示框,点击 Next 按钮,设自行置新密码,用于后续登录 Nexus。之后点击 Next 按钮,选择 Enable anonymous access 再次点击 Next 按钮后,点击 Finish 按钮,即可完成设置。

3.3、步骤八:配置阿里云代理仓库

如下图所示,Nexus 默认使用的远程仓库为 maven-central,从这个远程仓库下载依赖很慢,经常连不上。

鼠标单机 maven-central 仓库,查看 maven-central 仓库配置的远程链接,如下图所示:

可以看到,maven-central仓库配置的远程链接为 https://repo1.maven.org/maven2/,从这个远程仓库下载依赖很慢,经常连不上,所有我们需要配置阿里云远程代理仓库。

这里我们回到 Repositories 页面,点击 Create repository 按钮:

点击后进入选择仓库类型的页面,这里我们选择 maven2(proxy) 类型。

点击选则 maven2(proxy) 类型后,进入配置远程代理仓库的页面:

其中,每个配置项如下所示。

  • Name:aliyun-central
  • Version policy:Release
  • Layout policy:Strict
  • Remote storage:http://maven.aliyun.com/nexus/content/groups/public

接下来,拖动页面右侧的滚动条,滑到最下面,点击 Create repository 按钮

点击 Create repository 按钮后,就可以在 Repositories 列表中看到新配置的阿里云代理仓库了

并且 Status 显示的是 Online - Ready to connect,说明阿里云远程仓库配置成功。

3.4、步骤九:配置仓库组

接下来,需要将 aliyun-central 配置到仓库组,并且将 aliyun-central 排在 maven-central 上面。

Repositories 列表中,点击 maven-public

点击进入页面后,下拉页面右侧的滚动条,找到如图所示的配置

aliyun-central 移动到右侧,并排在最上面后,点击 Save 按钮保存配置。

3.5、步骤十:创建用户

接下来,创建一个用于上传 Jar 包到仓库的用户,具体步骤如下所示。

点击 Security 菜单下的 Users 菜单,再之后点击 Create local user 按钮

随后,按照下图所示设置用户的基本信息

这里,自行记录用户的密码,将 Status 设置为 Active 来启用账户,并设置账号的角色为 nx-admin,配置好之后,点击底部的 Create local user 按钮即可。

点击后在 Security 菜单下的 Users 菜单的用户列表中,可以查看到新创建的本地用户

至此,Nexus3 配置完毕。

4、配置本地 Maven 仓库

配置完 Nexus 后,接下来,还需要对本地的 Maven 仓库进行配置,主要就是对 Maven 的 settings.xml 文件进行配置

4.1、步骤十一:复制 settings 文件

复制 setting.xml 文件为 setting-lizhengi.xml 文件

4.2、步骤十二:配置 servers 节点

在 settings-lizhengi.xml 文件中,找到 servers 节点,在 servers 节点中,配置在步骤十中创建的用户

<server>
    <id>binghe</id>
    <username>lizhengi</username>
    <password>myPassword</password>
</server>

4.3、步骤十三:配置 mirrors 节点

在 settings-lizhengi.xml 文件中,找到 mirrors 节点,在 mirrors 节点中,配置仓库地址

<mirrors>
    <mirror>
        <id>lizhengi-nexus</id>
        <name>Lizhengi Nexus3</name>
        <url>http://tencentcloud:8081/repository/maven-public</url>
        <mirrorOf>*</mirrorOf>
    </mirror>
    <mirror>
        <id>alimaven</id>
        <name>aliyun maven</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

4.4、步骤十四:配置profiles节点

在 settings-lizhengi.xml 文件中,找到 profiles 节点,在 profiles 节点中,配置仓库信息:

<profile>
    <id>maven-public</id>
    <activation>
        <activeByDefault>true</activeByDefault>
        <jdk>1.8</jdk>
    </activation>
    <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
    </properties>
    <repositories>
        <repository>
            <id>nexus-public</id>
            <url>http://tencentcloud:8081/repository/maven-public/</url>
            <releases>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </releases>
            <snapshots>
                <enabled>true</enabled>
                <updatePolicy>always</updatePolicy>
            </snapshots>
        </repository>
    </repositories>
</profile>

至此,Maven私服仓库搭建完毕,并且本地Maven也已经配置完毕。

后续使用 Maven 构建项目时,指定使用 settings-lizhengi.xml 文件即可将依赖的 Jar 文件和生成的 Jar 文件上传到 Maven 私服仓库,如果使用 IDEA 编译项目,也需要在 IDEA 中,将 Maven 的配置文件指定为 settings-lizhengi.xml。

5、配置项目 pom.xml 文件

搭建完 Maven 私服仓库,配置好本地 Maven 仓库后,还需要在项目的 pom.xml 文件中进行相应的配置,具体如下所示:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.8.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
                <encoding>${project.build.sourceEncoding}</encoding>
            </configuration>
        </plugin>
        <!--发布代码Jar插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-deploy-plugin</artifactId>
            <version>2.8.2</version>
        </plugin>
        <!--发布源码插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-source-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
                <execution>
                    <phase>install</phase>
                    <goals>
                        <goal>jar-no-fork</goal>
                    </goals>
                </execution>
            </executions>
        </plugin>
    </plugins>
</build>
 
<distributionManagement>
    <repository>
        <!--这里的id与settings.xml中的servers节点配置的用户ID一直,这样才能使用配置的用户去上传到maven私有仓库 -->
        <!--此仓库对应的为RELEASE版本的jar-->
        <id>lizhengi</id>
        <url>http://tencentcloud:8081/repository/maven-releases/</url>
    </repository>
    <snapshotRepository>
        <!--这里的id与settings.xml中的servers节点配置的用户ID一直,这样才能使用配置的用户去上传到maven私有仓库 -->
        <!--此仓库对应的为SNAPSHOT版本的jar-->
        <id>lizhengi</id>
        <url>http://tencentcloud:8081/repository/maven-snapshots/</url>
    </snapshotRepository>
</distributionManagement>

到此这篇关于Docker安装Maven私服Nexus3的实现步骤的文章就介绍到这了,更多相关Docker安装Maven私服Nexus3内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • docker swam集群如何实现负载均衡

    docker swam集群如何实现负载均衡

    这篇文章主要介绍了docker swam集群如何实现负载均衡问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • docker安装OpenWebUI报错500的原因及解决方法

    docker安装OpenWebUI报错500的原因及解决方法

    Open WebUI是一个可扩展、功能丰富且用户友好的自托管WebUI,旨在完全离线操作,这篇文章主要介绍了docker安装OpenWebUI报错500的原因及解决方法,需要的朋友可以参考下
    2025-07-07
  • Docker的boot2docker.iso镜像使用

    Docker的boot2docker.iso镜像使用

    这篇文章主要介绍了Docker的boot2docker.iso镜像使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • docker常用命令及设置开机自启方式

    docker常用命令及设置开机自启方式

    这篇文章主要介绍了docker常用命令及设置开机自启方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 使用Docker搭建Picsur图床服务的实现

    使用Docker搭建Picsur图床服务的实现

    本文介绍如何在腾讯云轻量应用服务器通过Docker部署Picsur图床服务,文中通过图文示例步骤介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2025-07-07
  • Docker+K8S 集群环境搭建及分布式应用部署

    Docker+K8S 集群环境搭建及分布式应用部署

    这篇文章主要介绍了Docker+K8S 集群环境搭建及分布式应用部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • docker构建nginx alpine镜像实现步骤

    docker构建nginx alpine镜像实现步骤

    这篇文章主要介绍了docker构建nginx alpine镜像实现步骤,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • docker pull拉取镜像报错问题及解决

    docker pull拉取镜像报错问题及解决

    这篇文章主要介绍了docker pull拉取镜像报错问题及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-05-05
  • docker的harbor仓库登录问题小结

    docker的harbor仓库登录问题小结

    在使用Docker Harbor时,可能会因为证书信任问题或DNS解析问题导致登录失败,解决方法包括将自签名证书添加到系统的可信证书存储中,本文给大家介绍docker的harbor仓库登录问题,感兴趣的朋友一起看看吧
    2024-09-09
  • Docker端口映射的完全指南

    Docker端口映射的完全指南

    端口映射指的是将容器的端口映射到主机的端口,使得外部用户能够通过主机的IP地址和端口访问容器内运行的服务,本文给大家介绍了Docker端口映射的完全指南,需要的朋友可以参考下
    2025-08-08

最新评论