利用Docker搭建Nexus私有仓库实现Maven私服

目录
  • 一、前言
  • 二、Nexus搭建
  • 三、配置仓库
    • 3.1 配置加速库
    • 3.2 创建私有仓库
  • 四、配置权限
  • 五、上传Jar包
  • 六、使用Jar包

一、前言

相信国内的小伙伴都经历过,Gradle、Maven、NPM下拉速度过慢的情况。我们一般的做法是配置阿里云这样的中央仓库。加速问题是可以采用这种方式解决,但如果是团队内部的库想进行上传分发,传到Maven Central这种共用的Maven仓库就不太合适了。那样保密性和时效性都将收到破坏。所以在团队内部,我们一般都会搭建局域网内私有的中央仓库。支撑这种私有仓库的软件就是Nexus,本文将详细介绍如何从零搭建、上传库、下拉库整个使用过程。

二、Nexus搭建

现如今万物皆可Docker,我们没必要破坏本机系统原生安装了。直接新建一个docker-compose.yml文件,写入如下内容:

version: '3.1'
services:
  nexus:
    restart: always
    image: sonatype/nexus3
    container_name: nexus
    ports:
      - 6005:8081
    volumes:
      - /data/Docker/nexus/data:/nexus-data   

注意最后一行volumens映射的位置,如需备份还原,只需要将这个文件夹打包恢复即可。
写好后,运行docker-compose up -d运行即可。然后访问服务器的6005端口,看到这个界面就算搭建成功了。

三、配置仓库

搭建好后,会有一些默认的仓库:

maven-central:maven 中央库,默认从 https://repo1.maven.org/maven2/ 拉取 jar
maven-releases:私库发行版 jar maven-snapshots:私库快照(调试版本)jar
maven-public:仓库分组,把上面三个仓库组合在一起对外提供服务

概念说明:

group:这是一个仓库聚合的概念,用户仓库地址选择 Group 的地址,即可访问 Group中配置的,用于方便开发人员自己设定的仓库。maven-public 就是一个 Group 类型的仓库,内部设置了多个仓库,访问顺序取决于配置顺序,3.x 默认为Releases、Snapshots、Central,当然你也可以自己设置。
hosted:私有仓库,内部项目的发布仓库,专门用来存储我们自己生成的 jar 文件 snapshots:本地项目的快照仓库
releases: 本地项目发布的正式版本
proxy:代理类型,从远程中央仓库中寻找数据的仓库(可以点击对应的仓库的Configuration 页签下 Remote Storage 属性的值即被代理的远程仓库的路径),如可配置阿里云 maven 仓库
central:中央仓库

3.1 配置加速库

我们通过上文了解到,Nexus默认会从maven.org拉取我们需要的公共库。我们需要配置一个阿里云的加速库,这样凡是需要公共库的都会优先从阿里云加速下载。在设置中,点击创建仓库。

可以看到,我们可以创建多种仓库,Docker、Maven、NPM、Yum都可以。本文就以Maven为例了,其他仓库都类似。

可以写个名字,然后在Remote Storage的地址栏中,输入阿里云的Maven仓库:http://maven.aliyun.com/nexus/content/groups/public/

写好后,就可以保存了。然后再进入maven-public组的设置,将我们刚刚创建的aliyun-repository代理库添加到右边,并调到第一个位置。这样一些公共库比如Spring就会默认从阿里云那边下载,并且Nexus会自带缓存功能,只有第一次需要下载。后续将直接从局域网的Nexus下载,大大加快了下载速度。(非常适合没有外网开发的团队)

3.2 创建私有仓库

配置好Maven的基础加速库后,我们就来创建一个团队内部使用的Maven仓库。我们继续点击创建仓库,这里选择maven2(hosted)

Version policy下面有Release(正式版)、Snapshots(测试版)、Mixed(混合)三个选项,其实和我们平时引用第三方的库是一样的,只是我们一般会引用第三方库的正式版。Deployment policy这里我选择了Allow redeploy可以覆盖上传,你可以根据自身情况调整下面这些参数。

创建好后就可以直接使用了。但在此之前,我们最好配置一下开发账号,因为上传库的时候需要有账号密码。如果直接把系统管理员的账号给开发者会比较危险,毕竟现在删库跑路的很多。

四、配置权限

在设置页面的Roles里先创建一个角色:

然后只给这个开发这个角色,固定仓库的浏览和编辑权限。

最后创建用户,然后将该用户名、密码和该仓库的地址给到开发者就可以了。

仓库地址可以点击列表中Copy得到:

五、上传Jar包

上传Jar包到私有仓库的方式其实有很多种,我们一般项目中一般会采用Maven或Gradle脚本来进行。Maven大家应该都比较熟了,我这里就用安卓人狂喜的Gradle来演示一下。在build.gradle中编写如下脚本即可上传。

方便大佬复制:

group 'com.niubi'
version '1.0-SNAPSHOT'
//加载插件
apply plugin: 'java'
apply plugin: 'maven'
apply plugin: 'idea'
//配置打Jar包的参数
javadoc {
    failOnError false
    options.addStringOption('Xdoclint:none', '-quiet')
    options.addStringOption('encoding', 'UTF-8')
    options.addStringOption('charSet', 'UTF-8')
}
//打包文档
task javadocJar(type: Jar, dependsOn: javadoc) {
    classifier = 'javadoc'
    from 'build/docs/javadoc'
}
//打包源代码
task sourcesJar(type: Jar, dependsOn: classes) {
    classifier = 'sources'
    from sourceSets.main.allSource
}

artifacts {
    archives jar
    archives javadocJar
    archives sourcesJar
}
uploadArchives {
    repositories {
        mavenDeployer {
            // 开发版
            snapshotRepository(url: "http://XXX:6005/repository/GfptLib/") {
                authentication(userName: "xxx", password: "xxx")
            }
            /*// 正式版
            repository(url: "http://XXX:8081/repository/maven-releases/") {
                authentication(userName: "xxx", password: "xxx")
            }*/
			// 只发布jar包
            addFilter('jar') {artifact, file ->
                artifact.ext == 'jar'
            }
            pom.groupId = "$project.group"
            pom.artifactId = "$project.name"
            pom.version = "$project.version"
        }
    }
}

和Maven一样,我们写好后,可以直接在IDEA的Gradle窗口中看到这个命令,双击即可运行上传:

运行成功后,就可以在Maven仓库中看到该Jar包,并可以将该jar包引用到项目中去。

六、使用Jar包

和引用第三方库的用法一样,只需要将刚刚上传jar包的坐标写对后就可以使用:

compile("com.niubi:util:latest.integration")

当然,在仓库依赖地址中,我们需要加入自己的Maven私服地址:

// 【仓库设置】
repositories {
    // 使用本地仓库
    mavenLocal()
    // 使用团队私服仓库
    maven {
        url "http://xxx:6005/repository/GfptLib/"
    }
    maven {
        url "http://xxx:6005/repository/maven-public/"
    }
    // 使用 Gradle 的自身默认配置加载仓库
    mavenCentral()
}

重新编译一下,就可以下载到我们刚刚上传的Jar包了。

到此这篇关于Docker轻松搭建Nexus私有仓库,实现Maven私服的文章就介绍到这了,更多相关Docker搭建Nexus私有仓库内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Maven发布项目 (jar包) 到Nexus私服中的操作

    1 需求说明 开发完项目后, 将项目版本发布到Nexus私服中. 2 实现步骤 2.1 Maven服务的setting.xml文件 (1) 如果本机安装了Maven服务, 可在${MAVEN_HOME}/conf/setting.xml中指定私服相关的配置: <!-- 在servers标签下配置server, 包括: 私服的用户名和密码, 在deploy项目时需要用到 --> <server> <id>releases</id> <username&g

  • 如何通过网页方式将jar包上传到nexus的方法步骤

    在使用Maven管理项目时,如何将jar包上传到私有仓库,下面简单介绍一下上传方法. 环境:nexus私有库 步骤如下: 1.登陆已经安装好的nexus私有仓库,如图: 2.点击左边菜单"Repositories",选择右边列表"3rd party" 3.点击"3rd party",选择artifact Upload,如下图: 4.在artifact Upload界面显示的有GAV Parameter,groupId,artifactId,Ver

  • 使用Nexus添加jar包到私服里的方法步骤

    为什么要搭建nexus私服,原因很简单,有些公司都不提供外网给项目组人员,因此就不能使用maven访问远程的仓库地址,所以很有必要在局域网里找一台有外网权限的机器,搭建nexus私服,然后开发人员连到这台私服上,这样的话就可以通过这台搭建了nexus私服的电脑访问maven的远程仓库. 1.首先确定我们的环境安装好maven,jdk等必须的环境 2.这些都准备好之后,去下载最新版本的nexus    下载地址:http://www.sonatype.org/nexus/go 我本地安装的是 ne

  • Maven入门之使用Nexus搭建Maven私服及上传下载jar包

    一. 私服搭建及配置 1 . 私服简介 私服是架设在局域网的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构件.有了私服之后,当 Maven 需要下载构件时,直接请求私服,私服上存在则下载到本地仓库:否则,私服请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载. 我们可以使用专门的 Maven 仓库管理软件来搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus.这里我们使用 Sonatype Nexus. 2 . 安装Nexus 2 .

  • Nexus3x创建私有仓库并使用gradle上传jar包

    目录 一.创建私有仓库 二.将私有仓库添加到maven-public库中 三.使用Gradle上传jar包到私有仓库示例 一.创建私有仓库 1.打开Nexus首页并登录,进入设置界面,点击创建 2.选择maven2 hosted类型的仓库 3.输入创建的仓库的名称,如果允许重复部署,可以将下方的Disable redeploy更改为Allow Redeploy 二.将私有仓库添加到maven-public库中 1.打开maven-public的设置界面 2.将我们创建的库添加到maven-pub

  • 利用Docker搭建Nexus私有仓库实现Maven私服

    目录 一.前言 二.Nexus搭建 三.配置仓库 3.1 配置加速库 3.2 创建私有仓库 四.配置权限 五.上传Jar包 六.使用Jar包 一.前言 相信国内的小伙伴都经历过,Gradle.Maven.NPM下拉速度过慢的情况.我们一般的做法是配置阿里云这样的中央仓库.加速问题是可以采用这种方式解决,但如果是团队内部的库想进行上传分发,传到Maven Central这种共用的Maven仓库就不太合适了.那样保密性和时效性都将收到破坏.所以在团队内部,我们一般都会搭建局域网内私有的中央仓库.支撑

  • Docker搭建本地私有仓库的详细步骤

    和Mavan的管理一样,Dockers不仅提供了一个中央仓库,同时也允许我们使用registry搭建本地私有仓库.使用私有仓库有许多优点: 一.节省网络带宽,针对于每个镜像不用每个人都去中央仓库上面去下载,只需要从私有仓库中下载即可: 二.提供镜像资源利用,针对于公司内部使用的镜像,推送到本地的私有仓库中,以供公司内部相关人员使用. 接下来我们就大致说一下如何在本地搭建私有仓库. 环境准备 环境:两个装有Docker的Ubuntu虚拟机 虚拟机一:192.168.112.132 用户开发机 虚拟

  • 如何使用Docker搭建pypi私有仓库

    一.搭建 1.准备htpasswd.txt文件 该文件内容包含上传包至仓库时验证的用户名和密码 pip install htpasswd htpasswd -sc htpasswd.txt <username> 2.启动容器 docker run --name pypiserver --restart=always -v /data/pypi/packages:/data/packages -v /root/htpasswd.txt:/data/htpasswd.txt -p 8080:808

  • Docker容器搭建本地私有仓库详情

    目录 前言 一.首先下载registry镜像 二.在daemon.json文件中添加私有镜像仓库的地址并重启 三.创建registry容器并开放端口 四.给镜像打标签后上传到私有仓库 五.获取私有仓库列表查看是否上传成功 六.验证:从私有仓库下载镜像 前言 Docker 官方提供了一个搭建私有仓库的镜像 registry ,运行该镜像的容器并且对外暴露5000端口就ok了.通常我们在docker拉取的镜像都是在docker hub或quay.io等公有仓库获取,那么在实际工作中,每个公司如果使用

  • Docker搭建Harbor公开仓库的方法示例

    上一篇博文讲到了Registry私有仓库,今天配置一下Harbor仓库,Harbor呢可以作为公开仓库,也可以作为私有仓库,今天就来配置一下Harbor如何实现公开仓库和私有仓库. 关于Registry公开仓库请访问博文:部署Docker私有仓库Registry Registry和Harbor的区别 Registry:是一个私有镜像仓库,图形化支持较差,小型企业使用: Harbor:支持可视化管理,支持私有仓库和公有仓库,支持镜像的管理控制: Docker Harbor的优点 VMWare公司的

  • Docker容器harbor私有仓库部署和管理

    目录 前言 一.Harbor概述 二.Harbor的特性 三.Harbor的构成 四.Harbor私有仓库搭建 (1)安装docker-compose (2)安装harbor (3)新建项目 (4)镜像推送 (5)从私有仓库下载镜像 (6)Harbor管理 前言 之前我们搭建了本地私有仓库,但是本地仓库的管理和使用比较麻烦,个原生的私有仓库并不好用,所以我们采用harbor私有仓库,也叫私服,更加人性化. 一.Harbor概述 Harbor是VMware公司开源的企业级Docker Regist

  • 利用docker搭建php7和nginx运行环境全过程(官方镜像)

    本文分享的是利用docker搭建php7和nginx运行环境的全过程,分享出来供大家参考学习,下面来看看详细的介绍: 环境介绍 根目录: /docker 网站根目录:/docker/www nginx相关目录:/docker/nginx/conf.d 准备工作 1.使用docker加速器 curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://68abbefd.m.daocloud.io service do

  • docker利用nextcloud搭建一个私有百度云盘

    突然有个需求,需要搭建一个文档存储协同的私有服务,经过多方搜索后找到onlyoffice服务可以满足我的文档编辑相关需求,而存储方面则可以利用nextcloud搭建一个私有云盘服务来满足,这样利用nextcloud+onlyoffice就可以满足我的文档在线协同存储需求,其实说白了就是可以编辑ofiice等文件并分享的的私有云盘. 前期我采用传统的镜像一个一个启动,后边我又换成了docker-compose来部署,所以我也提供了两种方案.还有一点就是我的数据库采用的是postgresql,系统还

  • 利用docker搭建web服务环境的方法步骤

    前言 做过开发的人对开发环境的安装.配置应该都不会太陌生,不管你做什么开发,对开发环境都会具有一定的依赖性的.对于 PHP 的 Web 开发来说,开发环境至少要有一个 Web 服务器(如 Apache.Nginx).一个数据库服务器(如 MySQL)和一个 PHP 解析器吧,如果你的 PHP 代码使用的一些扩展,那你还需要给你的 PHP 安装上这些扩展,那样你的 PHP 代码才能够顺利地跑起来.对于一个只想静静地敲代码的开发人员来说,开发环境的安装与配置这种事情,只要经历一次就已经很折腾人了.可

  • Docker 教程之私有仓库详解

    私有仓库 有时候使用 Docker Hub 这样的公共仓库可能不方便,用户可以创建一个本地仓库供私人使用. 本节介绍如何使用本地仓库. docker-registry 是官方提供的工具,可以用于构建私有的镜像仓库. 安装运行 docker-registry 容器运行 在安装了 Docker 后,可以通过获取官方 registry 镜像来运行. $ sudo docker run -d -p 5000:5000 registry 这将使用官方的 registry 镜像来启动本地的私有仓库. 用户可

随机推荐