Docker+nexus构建自己的制品库之(一)使用Docker搭建Nexus私服

概述

Nexus私服是一个企业级的仓库管理系统,用于存储和管理软件构建、依赖和其他二进制文件。它提供了稳定的存储和访问机制,可集中管理Maven、npm、Docker等不同类型的仓库。Nexus私服支持团队协作、安全性和可控性,并提供了灵活的权限控制和报告功能。通过Nexus私服,组织可以更高效地管理内部软件资产、加速软件交付过程,并确保软件质量和安全性。

本文将通过三个部分介绍如何搭建并使用nexus私服:

  • 使用Docker搭建Nexus私服
  • Maven仓库的使用
  • Docker仓库的使用

如果有时间还会介绍如下内容:

  • Npm仓库的使用
  • Pypi仓库的使用

适用场景

Nexus私服在以下场景下通常被广泛使用:

  • 团队开发: 当多个开发者共同工作于一个项目时,Nexus私服可以提供统一的依赖管理,确保所有开发者使用相同版本的库和组件,保证代码的一致性和可维护性。

  • 构建和部署流程优化: 在持续集成和持续部署(CI/CD)环境中,Nexus私服可以作为中央存储库,管理和分发构建所需的依赖、插件和其他二进制文件,加快构建和部署速度。

  • 安全和合规性需求: 企业通常需要符合安全和合规性标准,Nexus私服可以提供安全的存储和访问控制机制,确保敏感数据和代码的安全性,同时提供审计和报告功能以满足合规性要求。

  • 自定义库和组件管理: 部分项目可能需要使用自定义的库和组件,Nexus私服可以作为内部仓库,管理和分发这些特定的库和组件,提高项目的灵活性和可扩展性。

  • 离线环境支持: 在没有互联网连接或网络带宽受限的环境中,Nexus私服可以充当离线存储库,提供对依赖和组件的本地访问,确保项目在任何环境下都能正常构建和运行。

运行环境

Ubuntu版本信息

本文使用的ubuntu版本信息如下

copier@MS-OUOXYGCBWUIR:~$ cat /etc/os-release
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 20.04.3 LTS"
VERSION_ID="20.04"
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
VERSION_CODENAME=focal
UBUNTU_CODENAME=focal

Docker版本信息

copier@MS-OUOXYGCBWUIR:~$ docker -v
Docker version 25.0.3, build 4debf41

Docker镜像

具体帮助文档参照Github/docker-nexus3

sonatype/nexus3

操作步骤

使用如下命令启动docker

docker run -d \
-p 8081:8081 \
-p 8082:8082 \
--restart always \
-p 8083:8083 \
--name nexus \
sonatype/nexus3

请添加图片描述

主要启动参数说明:

  • -d: 以后台(detached)模式运行容器。
  • -p 8081:8081: 将容器的8081端口映射到主机的8081端口,用于访问Nexus的Web界面。
  • -p 8082:8082:将容器的8082端口映射到主机的8082端口,用于Docker私有镜像仓库。
  • --restart always: 设置容器总是在退出时重新启动。
  • -p 8083:8083: 将容器的8083端口映射到主机的8083端口,用于Docker组件的分发和镜像层缓存。
  • --name nexus: 为容器指定名称为nexus。
  • sonatype/nexus3: Docker镜像的名称和标签,用于从Docker Hub拉取Sonatype Nexus Repository Manager 3的官方镜像

访问Nexus仓库

登录

启动成功后,您可以通过浏览器访问Nexus的Web界面。默认情况下,Nexus的Web界面监听8081端口。假设您的Nexus服务器运行在本地,并且使用了默认端口配置,您可以在浏览器中输入以下地址访问Nexus:

http://localhost:8081

如果您使用的是远程服务器或者已经修改了Nexus的端口配置,那么请替换上述地址中的localhost和端口号为您的服务器地址和Nexus配置的端口号。例如,我本机的IP地址为192.168.3.37,并且端口号为8081,则应该访问以下地址:(下面地址你千万别点,点了也访问不了)

http://192.168.3.37:8081

请添加图片描述

在浏览器中输入正确的地址后,您将会看到Nexus的登录页面。初次登陆,登录界面会提示密码存储在文件"/nexus-data/admin.password"使用如下命令查看密码。

docker exec -it nexus cat /nexus-data/admin.password

请添加图片描述

仓库类型

按照下图 所示的操作便可以创建自己的私有仓库了。

请添加图片描述

点击“Create repository”按钮后,可以选择不同类型的仓库,每种仓库都有他的使用场景。
请添加图片描述

Nexus大多数类型下都有Proxy、Group、Host等概念,其主要作用如下:

Proxy Repository(代理仓库):代理仓库用于代理远程仓库的内容,并在本地缓存。当从远程仓库获取资源时,Nexus首先检查代理仓库,如果本地缓存中有相同的资源,则直接返回给请求方,否则从远程仓库获取并缓存到本地。代理仓库通常用于加速下载速度,并减少对远程仓库的依赖。

Group Repository(组合仓库):组合仓库允许将多个仓库组合在一起,并在一个统一的位置提供这些仓库的内容。当从组合仓库获取资源时,Nexus会按照预定的顺序依次查询包含在组合仓库中的各个成员仓库,并返回找到的第一个匹配项。组合仓库通常用于简化依赖管理,将多个仓库的内容聚合到一个虚拟的位置。

Hosted Repository(托管仓库):托管仓库用于存储本地构建的组件或第三方依赖。在托管仓库中,您可以发布和管理自己的构件,Nexus会负责管理这些文件的上传、下载和版本控制。托管仓库通常用于内部构建和共享项目的组件。

结束语

下文将介绍如何一下内容

  • 在Maven项目中配置和使用Nexus仓库
  • 将学习如何修改项目的pom.xml文件,以指定使用Nexus仓库作为项目的依赖源
  • 了解如何在Maven的settings.xml文件中添加Nexus仓库的认证信息
  • 学习如何使用Maven命令将项目构件上传到Nexus仓库,并使用Maven命令从Nexus仓库下载项目所需的依赖。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

代码转场工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值