当前位置: 首页 > news >正文

基于Docker搭建Maven私服仓库

基于Docker搭建Maven私服仓库

Maven支持二进制,容器,helm cart、operator等方式安装运行。本文记录使用docker在内网搭建maven私服仓库。

1. 准备工作

1.1 部署要求

Nexus版本声明周期
*Sonatype Nexus Repository Version**Status**Initial Release Date**Beginning of Extended Maintenance**Sunset Date*
3.73.0General AvailabilityOctober 10, 2024October 10, 2025April 10, 2026
3.72.0General AvailabilitySeptember 4, 2024September 4, 2025March 4, 2026
3.71.0General AvailabilityAugust 8, 2024August 8, 2025February 8, 2026
3.70.0 - 3.70.2General AvailabilitySeptember 3, 2024 (3.70.2)July 10, 2024 (3.70.1)July 9, 2024 (3.70.0)July 9, 2025January 9, 2026

更多信息参考:Sonatype Nexus Repository 3 Versions Status,Sonatype Sunsetting Information

操作系统

支持Linux、macos、windows;

1.2 资源要求

单机部署的系统要求:

  • 8CPU
  • 16GB RAM
  • 100GB 磁盘空间
  • 兼容的数据库
    • PostgreSQL Database (Recommended)
      • 200 Max Connections
      • 4GB Shared Buffer
      • 12GB Cache Size
    • Embedded H2 Database
      • 2703M Max Direct Memory Size (OrientDB only)

本文部署使用内嵌的H2数据库。

1.3 部署资源准备

拉取maven镜像,默认不带tag会拉取最新的版本。

]# docker pull sonatype/nexus3# 查看版本,本文拉取的maven版本为3.73.0-12
]# docker sonatype/nexus3  | grep -i version"DockerVersion": "","com.sonatype.license": "Apache License, Version 2.0","io.buildah.version": "1.29.0","version": "3.73.0-12"

创建本地文件夹用于挂载:

]# mkdir /data/nexus-data && chown -R 200 /data/nexus-data

2. 参考部署架构

下表展示了不同部署架构的规格:

Links to Reference ArchitecturesArchitecture 1Architecture 2Architecture 3Architecture 4Architecture 5
Max User Count501002005001,000+
Max Requests per Day20,00050,000100,000500,0001,000,000+
Max Repository Count2050200500500+
Max Blob Storage20GB200GB1TB50TB100TB+
Compatible EditionsPro or OSSProProProPro

本文使用docker单机部署maven仓库,参考官方Nexus Repository Reference Architecture 1,更多适用于生产环境的高可用部署方案参考其他Architecture。单机部署规格应该不超过如下限制:

  • 最多 50 个持有许可证的贡献开发人员,这些开发人员参与软件开发生命周期;
  • 每天最多 20,000 个请求;
  • 最多 20 个存储库;
  • 最大 20GB 的 blob 存储;

3. 启动maven容器

docker启动命令如下:

]# docker run -d -p 8081:8081 --name nexus3 -v /data/nexus-data:/nexus-data --restart=always sonatype/nexus3

查看容器状态:

]# docker ps
CONTAINER ID   IMAGE       		 COMMAND    			  CREATED          STATUS    PORTS          NAMES
fda202767290   sonatype/nexus3   "/opt/sonatype/nexus…"   23 minutes ago   Up 23 minutes   0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   nexus

如果需要排错,使用入门命令查看容器日志:

]# docker logs -f nexus3

测试nexus,响应正常

]# curl http://localhost:8081/<!DOCTYPE html>
<html lang="en">
<head><title>Sonatype Nexus Repository</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><meta name="description" content="Sonatype Nexus Repository"/><meta http-equiv="X-UA-Compatible" content="IE=edge"/>
...

4. Nexus3配置

打开nexus3管理页面

浏览器使用<http://ip:8081打开nexus3管理页面,默认是未登录状态:

web-default

登录nexus3

获取admin密码,密码存放到如下路径文件中(本文环境)。

]# cat /data/nexus-data/admin.password 
45234ef3-a06d-4ece-a770-75911af505f1

对应容器中的路径为:/nexus-data/admin.password

使用用户名:admin,密码:45234ef3-a06d-4ece-a770-75911af505f1登录nexus,并按照向导修改密码、开启匿名访问。

配置代理仓库

Nexus默认使用的远程仓库为maven-central,国内网络环境从这个远程仓库下载依赖很慢。

repos

进入maven-central仓库,查看maven-central仓库配置的远程链接为:https://repo1.maven.org/maven2/

maven-central

这里回到repositories列表界面,创建一个repository,选择maven2(proxy)类型,然后设置如下参数:

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

maven-proxy

点击创建仓库,确保刚创建的仓库状态为Online - Ready to connect

repo-list

配置仓库组

将aliyun-central配置到仓库组,并且将aliyun-central排在maven-central上面。进入maven-public仓库如下界面,将aliyun-central移动到右侧,并排在最上面:

maven-group

创建用户

创建一个用于上传Jar包到仓库的用户,设置-Security-Users-Create local user,按照提示设置用户名和密码等信息,确保用户角色设置为nx-admin

user-mange

相关资料

  1. nexus安装:https://help.sonatype.com/en/installation-methods.html
  2. nexus容器安装:https://hub.docker.com/r/sonatype/nexus3/
  3. 研发提效必备技能:手把手教你基于Docker搭建Maven私服仓库-腾讯云开发者社区-腾讯云

http://www.mrgr.cn/news/65041.html

相关文章:

  • debian10 arm64 修改国内软件源
  • 使用 API 和离线库查询 IP 地址方法详解
  • 信道容量的概念推论
  • 病床呼叫器设计仿真与实物制作
  • Android Studio各种历史版本
  • Docker使用复习(11.3)
  • java集合的fail-fast机制
  • 网络层4——网络控制协议ICMP
  • TEST2TEST2
  • DNS域名解析实验
  • 【踩坑】修复高版本dgl中distributed.load_partition不返回orig_id问题
  • 西门子五大系列PLC,该怎么选?
  • Java项目实战II基于Spring Boot的智能家居系统(开发文档+数据库+源码)
  • Transformer 架构简单理解;GPT-3.5 的架构,向量长度为 :12288;Transformer架构改进:BERT和GPT
  • 【数据结构】二叉树——判断是否为完全二叉树
  • 【AD】2-1 元件符号的绘制创建实例-电阻容/CHIP类器件
  • 网络层3——IP数据报转发的过程
  • 70B的模型需要多少张A10的卡可以部署成功,如果使用vLLM
  • 正向解析和反向解析
  • 【Vue框架】用 Vue 的时候应该选 JS 还是 TS?全面解析与实用建议
  • 【文献及模型、制图分享】中国城市家庭食物浪费行为及减量对策——以郑州市为例
  • LeetCode 876. 链表的中间结点
  • 中断处理和DMA(Direct Memory Access,直接内存访问)
  • C#-类:声明类、声明类对象
  • 中间件之XXL-Job
  • 软考-数据结构