相关文章推荐
风度翩翩的柿子  ·  【步骤图】起泡胶的做法_起泡胶的做法步骤_菜 ...·  1 周前    · 
孤独的煎鸡蛋  ·  驻巴拿马大使徐学渊会见中美洲议会副议长塞鲁德 ...·  1 年前    · 
腼腆的小刀  ·  在线问卷调查工具测评——问卷星、金数据、问卷 ...·  1 年前    · 
含蓄的充值卡  ·  虚幻引擎和物理引擎哪个好_火星网校·  1 年前    · 
没有腹肌的仙人球  ·  5G来了3G要退网!中国电信喊你换卡换手机, ...·  1 年前    · 
小百科  ›  转用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)-腾讯云开发者社区-腾讯云
docker 镜像 nexus docker私有仓库搭建
安静的麻辣香锅
1 年前
作者头像
心莱科技雪雁
0 篇文章

使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP
返回腾讯云官网
社区首页 > 专栏 > 雪雁的专栏 > 使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)

使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)

作者头像
心莱科技雪雁
发布 于 2019-04-22 14:49:11
4.7K 0
发布 于 2019-04-22 14:49:11
举报
  • Docker - 使用 Nexus3 搭设私有 NuGet 仓库
    • Nexus 默认帐号
    • Repositories
    • 上传组件包(Package)
    • Repositories 说明
    • 准备 Package
    • 上传 Package
    • 使用 Package
    • 拉取 Nexus 镜像
    • 运行 Nexus
    • NuGet
    • Nexus 私有仓库
    • 前言
    • 说明
    • 安装
    • Nexus NuGet 仓库简单使用
    • 总结

      NuGet

      Nuget 是免费、开源的包管理工具,专注于在 .Net 、 .Net Core 平台应用开发过程中第三方组件库的管理,相对于传统单纯的 dll 引用要方便、科学得多。  其中 nuget.org 是最著名的 NuGet 公开库,但是企业内部开发的(业务)公共组件因为私密性或商业机密不能上传到公共库中,所以企业内部需要搭建一个私有的 NuGet 仓库【私服】来支持。虽然微软有提供的 NugetServer,但 NugetServer 用起来并不那么方便。  而且企业有可能不止使用 C# 一种语言,可能其他的语言组件也需要管理,比如: Java 、 Docker 镜像 等,NugetServer 就捉襟见肘,本文我给大家带来一款全能型的私服软件 Nexus 。

      Nexus 私有仓库

      Nexus 是一个强大的工具仓库管理器,它极大地简化了本地内部仓库的维护和外部仓库的访问。 Nexus 支持管理 Bower 、Docker、Maven、npm、NuGet、Yum、PyPI 等工具包。最新版本的 Nexus3.x 全面支持 Docker 的私有镜像存储。

      Nexus 官网:www.sonatype.com

      说明

      本文主要介绍怎么在 Linux ( CentOS ) 系统上使用 Docker 来部署 Nexus ,本文使用的是 Nexus v3.15.3 版本进行操作的。 为什么使用 Docker 来部署 Nexus,是因为作者公司现在的基础设施为了方便维护全部使用 Docker 来部署。如果你不想使用 Dokcer 或者不想在 Linux 部署请前往官方网站下载对应安装包。

      注意:本文是在 CentOS 系统下进行操作的。

      安装

      下面介绍的安装步骤是作者在 Linux 系统已经安装了 Docker 为前提条件。

      拉取 Nexus 镜像

      从 Docker Hub 拉取 Nexus 的镜像到本地,我这里拉取是最新版本的。你也可以拉取相对应版本的镜像。

      $ docker pull sonatype/nexus3:latest  latest: Pulling from sonatype/nexus3  a02a4930cb5d: Pull complete   2c6aa0f814dc: Pull complete   ce7b7501fc94: Pull complete   Digest: sha256:00ede0830e375c8a9758ea5d98dd020425850bbeccc822da68e7bad7ae92dbfa  Status: Downloaded newer image for sonatype/nexus3:latest

      镜像详细说明:https://hub.docker.com/r/sonatype/nexus3

      运行 Nexus

      在运行之前先创建一个目录用来存放 Nexus 持久化数据。

      $ mkdir -p /data/nexus  

      使用 Docker 命令运行 Nexus 。

      $ docker run -d -p 8081:8081 --name nexus -v /data/nexus:/nexus-data sonatype/nexus3:latest  c90c62f4bd5d3f09d3f0d562e5fe41401954898729ed9f7407ed71296f372883

      Docker 返回容器的的 Hash ID,代表容器已经启动,通过 http://serverip:8081 就能访问Nexus了。

      但是请求的时候拒绝我的请求,这个地方困扰了我很久。我第一步先排除是否是防火墙的问题。

      $ firewall-cmd --state  not running

      使用命令查看防火墙没有运行,第二步查看容器当前状态。

      $ docker container ls -a  CONTAINER ID      IMAGE                    COMMAND                  CREATED             STATUS  c90c62f4bd5d      sonatype/nexus3:latest   "sh -c ${SONATYPE_DI…"   27 minutes ago      Exited

      发现这个容器的状态变成 Exited 已经退出,找到问题所在可能是什么原因导致 nexus 没有启动起来。现在使用容器日志查一下挂掉的原因。

      $ docker container logs c90c  mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied  mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied  OpenJDK 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No   such file or directory
        Warning:  Cannot open log file: ../sonatype-work/nexus3/log/jvm.log  Warning:  Forcing option -XX:LogFile=/tmp/jvm.log  Unable to update instance pid: Unable to create directory /nexus-data/instances  /nexus-data/log/karaf.log (No such file or directory)  Unable to update instance pid: Unable to create directory /nexus-data/instances

      从日志发现是因为 Nexus 在创建文件夹的时候没有权限。这个应该是上面在创建文件夹的时候没有分配权限导致的。下面我们给这个 /data/nexus 文件夹分配权限。

      $ chown -R 200 /data/nexus$ docker container start c90c62f4bd5d  c90c62f4bd5d

      重新启动容器后,再次访问一下 Nexus,下图显示可以打开 Nexus 。 我们现在发现 Nexus 可以支持很多仓库格式。我们现在已经安装完成了,下面我们来讲怎么简单使用 Nexus。

      Nexus NuGet 仓库简单使用

      下面将只会介绍一下怎么使用 NuGet ,至于使用 Nexus 其他仓库请前往官方查看详情文档。

      Nexus 默认帐号

      Nexus 的默认管理员账号 admin ,密码 admin123 。可以在 Nexus 管理界面右上角 Signin 按钮可以登录Nexus。登录完成之后可以点击下面图片齿轮图标,进行管理 Nexus 。

      Repositories

      点击右菜单的 Repositories 按钮可以看到 Nexus 内置的默认仓库:

      Repositories 说明

      Nexus 默认已经创建好了 Nuget 以及其他的仓库,并且是创建了3个不同类型的仓库: nuget-group 、 nuget-hosted 、 nuget.org-proxy 。

      nuget.org-proxy:类型是 proxy,表示代理仓库。我们向它请求包(package)的时候,如果本地有,它就从本地提供,如果本地没有,它会从 nuget.org 下载到本地,然后给我提供这个包。

      nuget-hosted:类型是 hosted,表示托管仓库。我们一般把自己开发的包上传到该仓库中。

      nuget-group:类型是 group,表示仓库组,它结合了 nuget.org-proxy 和 nuget-hosted ,能对外提供上述两者中的包。

      小结: nuget-hosted 负责包上传, nuget.org-proxy 负责代理从 nuget.org 下载包到 Nexus 缓存中, nuget-group 负责提供包。一般使用 nuget-group 提供的 URL 就可以了,它可以把私服和公共库进行合并。

      上传组件包(Package)

      准备 Package

      1. 先使用 Visual Studio 创建一个 类库项目 命名为 NexusTest 。
      1. 在 解决方案资源管理器 选中 NexusTest 项目右击点击属性。进入项目设置页选择 打包 选项卡。勾选 在版本中胜出NuGet包 。
      1. 在 解决方案资源管理器 选中 NexusTest 项目右击点击 生成 。生成成功之后在本项目的 bin\Debug 目录下找到 NexusTest.1.0.0.nupkg Nuget 文件,代表 Package 已经准备完成。

      上传 Package

      1. 添加 Nuget Realms ,因为 Nexus 认证 Nuget 是通过 Realms 来认证,因此要添加 Nuget Realms。
      1. 在 Upload 选中 nuget-hosted 点击进入,为什么要选中 nuget-hosted 上面已经说明。
      1. 把上面准备好的 NexusTest.1.0.0.nupkg Nuget 文件上传到 Nexus。
      1. 第三步上传成功,在 Browse 选中 nuget-hosted 点击进入。可以查看到已经上传成功。

      使用 Package

      1. 获取 Nuget 程序包源地址,在 Nexus 的 Browse 找到 nuget-group 获取到地址。
      1. 在 Visual Studio 的 Nuget 管理器 ,点击齿轮进行设置 Nexus 地址。
      1. 添加 Nexus 私有 Nuget 仓库地址。
 
推荐文章
风度翩翩的柿子  ·  【步骤图】起泡胶的做法_起泡胶的做法步骤_菜谱_下厨房
1 周前
孤独的煎鸡蛋  ·  驻巴拿马大使徐学渊会见中美洲议会副议长塞鲁德_中华人民共和国 ...
1 年前
腼腆的小刀  ·  在线问卷调查工具测评——问卷星、金数据、问卷网、腾讯问卷- 知乎
1 年前
含蓄的充值卡  ·  虚幻引擎和物理引擎哪个好_火星网校
1 年前
没有腹肌的仙人球  ·  5G来了3G要退网!中国电信喊你换卡换手机,暂未全国推广
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号