7、nexus3 docker 快速搭建maven私有仓库

nexus3 docker 快速搭建maven私有仓库

官方文档: https://help.sonatype.com/repomanager3#installation-docker
dockerFile:sonatype/nexus3:3.17.0

说明

maven仓库的依赖管理体系,已经成为java web项目不可或缺的组成部分,它大大降低了项目搭建过程中jar包选择的难度。而中央仓库使用量过高,导致访问速度过慢,同时企业内部的二方库也需要内部私有maven仓库进行管理。
nexus 是一个强大的 maven 仓库管理器,提供了内部仓库管理和外部仓库代理等功能,并支持LDAP安全身份认证,可以满足企业内部私有仓库搭建要求。nexus仓库分为专业版和OSS版,我们使用免费的oss版本搭建私有maven仓库。
注意:nexus3 安装要求,可用存储空间最小5G;CPU 最少4核

一. 镜像获取

通过docker hub官方搜索并选择合适的镜像版本,我们这里使用 sonatype/nexus3:3.17.0版本

docker pull sonatype/nexus3:3.17.0

二. 容器创建

1、映射目录分配

根据dockerFile中的VOLUME设置,映射规划如下:

/devops/nexus/data:/nexus-data

2、端口映射规划

nexus3 容器默认对外服务端口为 8081devops体系中的映射规划如下:

18081:8081

3、容器创建

目录创建脚本

sudo mkdir -p /devops/nexus/data

注意: 由于sonatype/nexus3:3.17.0容器内部程序采用nexus用户(uid=200)启动,外部映射目录必须允许该用户操作,本文将外部映射目录/devops/nexus/data的权限为 777

chmod 777 /devops/nexus/data

容器创建脚本 (不执行)

docker run -d --name nexus --restart always \
       --publish 18081:8081 \
       -v /devops/nexus/data:/nexus-data \
       sonatype/nexus3:3.17.0

三. nginx 域名代理

devops体系中,nexus3 的外部访问使用 nexus.tysite.org80端口,代理规划如下:

1、服务端配置:

/usr/local/nginx/conf/conf.d目录中增加 nexus.tysite.org.conf配置文件,实现80端口代理本机的18081端口。

cd /usr/local/nginx/conf/conf.d
vi nexus.tysite.org.conf
server {
    listen       80;
    server_name  nexus.tysite.org;
    client_max_body_size 1G;

    location / {
        proxy_pass http://localhost:18081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
2、客户端配置:

用户本地修改 hosts 文件,添加域名映射

192.168.43.150 nexus.tysite.org

四. devops 添加 nexus

根据容器创建规划,nexusdocker-compose语法模板如下,添加到devopsdocker-compose.yml文件中即可。

  nexus: 
    container_name: nexus
    image: sonatype/nexus3:3.17.0
    restart: always
    ports: 
      - "18081:8081"
    volumes:
      - "./nexus/data:/nexus-data"

五. 配置私有maven仓库

1、访问 http://nexus.tysite.org

通过docker-compose up -d命令创建nexus容器,等待两三分钟的初始化,然后从浏览器访问域名 http://nexus.tysite.org
首次访问

2、登录nexus

点击Sign in 按钮弹出登录框,根据登录提示获取账号和密码。
首次登录
/nexus-data已经映射到/devops/nexus/data目录,故直接查看该目录下的admin.password文件内容即可
在这里插入图片描述
然后,按照向导提示设置密码和允许匿名访问。
设置密码
注意: 开启匿名访问状态下,从私有仓库拉取jar包时无需用户登录(内网私有仓库建议开启)

  • 开启/关闭方法: Security > Anonymous > Allow anonymous users to access the server是否允许匿名
3、关闭Outreach:Management检查

在查看nexus的日志时,我们会发现如下错误。
访问异常
解决方法: 点击左侧目录中的 System > Capabilities ,然后在右侧列表中找到Outreach:Management,设置 为Disable 即可。
关闭验证

4、修改 maven-central的默认源

sonatype/nexus3:3.17.0为我们提供了一组默认的maven2仓库,可供我们直接使用:

  • maven-central:代理仓库(Type <proxy>),用于代理中央仓库的依赖包集合。
  • maven-releases:发布版仓库(Type <hosted> ),用于存放项目组自行发布的jar包。
  • maven-snapshots:快照版仓库(Type<hosted>、Version policy <Snapshot>),用于存放项目组开发过程中的依赖jar包。
  • maven-publish:maven仓库集合(Type<group>),用于整合以上三个仓库,用户可以直接使用集合仓库的地址拉取依赖jar包。

注意: 私有仓库URL请使用maven-publish仓库的地址,以便同时使用代理仓库和内部jar仓库
默认maven仓库

代理仓库maven-central的默认源地址为中央仓库http://repo1.maven.org/maven2,考虑到访问效率问题,修改为阿里的源地址:http://maven.aliyun.com/nexus/content/groups/public
默认源

5、代理仓库健康检查

点击代理仓库maven-centralAnalyze按钮,同意sonatype服务协议即可启用代理服务。
analyze完成效果

六. 拉取依赖包

注意: nexus3的私有仓库默认状态下并未获取中央仓库的索引和依赖包,而是maven工具从该私有仓库拉取依赖包时,该私有仓库从中央仓库拉取相关依赖包并下载到客户端。

这里我们以gradle项目为例。

1、gradle项目配置maven仓库

将原有maven仓库配置注释,并以如下形式配置私有仓库地址(匿名仓库credentials无需填写)。

repositories {
	maven {
        url "http://nexus.tysite.org/repository/maven-public/"
        credentials {
            username "admin"
            password "******"
        }
    }
}

说明:

  • repositories:依赖仓库配置
  • maven:采用maven仓库方式
  • url:仓库地址,这里配置我们的私有仓库http://nexus.tysite.org/repository/maven-public/
  • credentials:验证秘钥,允许匿名的私有仓库无需配置。
2、拉取依赖包

执行如下命令,构建依赖:

./gradlew build --refresh-dependencies

若本地已经安装gradle客户端,则使用如下脚本

gradle build --refresh-dependencies

本地拉取效果:
jar包拉取结果
nexus索引加载结果:
nexus载入结果

七. 二方库jar发布

注意:本文演示web管理端上传二方库 jar 包

用户登录 nexus 系统,选择Browse server contents > Uploadmaven-releases仓库。release仓库上传
根据《阿里巴巴Java开发手册》对二方库的命名规约,上传内部二方库common-1.0.0.jar,相关定义如下:

  • Group ID :org.tysite
  • Artifact ID:common
  • Version:1.0.0

二方库上传
上传成功后,可以在Browse > maven-releases 库查看已上传的二方库信息。
上传结果浏览
获取二方库common-1.0.0.jar的拉取地址,可以通过nexus网站的 Search 列表搜索 org.tysite 或者 common,找到我们上传的 jar 包,查看 Usage 信息。 maven拉取信息

八. 迁移nexus3 maven私有仓库

sonatype/nexus3:3.17.0版本的 nexus3 仓库迁移相对简单,只需要将原映射目录/nexus-data 中的内容打包,在新的 nexus docker 环境中映射即可。

发布了27 篇原创文章 · 获赞 2 · 访问量 3498

猜你喜欢

转载自blog.csdn.net/tysite/article/details/103629206
今日推荐