使用 Nexus3镜像搭设私有仓库(Bower DockerMavennpmNuGetYumPyPI)

Posted 麦扣聊技术

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 Nexus3镜像搭设私有仓库(Bower DockerMavennpmNuGetYumPyPI)相关的知识,希望对你有一定的参考价值。

  • 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# 一种语言,可能其他的语言组件也需要管理,比如:JavaDocker 镜像 等,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 的镜像到本地,我这里拉取是最新版本的。你也可以拉取相对应版本的镜像。

 
   
   
 
  1. $ docker pull sonatype/nexus3:latest

  2. latest: Pulling from sonatype/nexus3

  3. a02a4930cb5d: Pull complete

  4. 2c6aa0f814dc: Pull complete

  5. ce7b7501fc94: Pull complete

  6. Digest: sha256:00ede0830e375c8a9758ea5d98dd020425850bbeccc822da68e7bad7ae92dbfa

  7. Status: Downloaded newer image for sonatype/nexus3:latest

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

运行 Nexus

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

 
   
   
 
  1. $ mkdir -p /data/nexus

使用 Docker 命令运行 Nexus 。

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

  2. c90c62f4bd5d3f09d3f0d562e5fe41401954898729ed9f7407ed71296f372883

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

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

 
   
   
 
  1. $ firewall-cmd --state

  2. not running

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

 
   
   
 
  1. $ docker container ls -a

  2. CONTAINER ID IMAGE COMMAND CREATED STATUS

  3. c90c62f4bd5d sonatype/nexus3:latest "sh -c ${SONATYPE_DI…" 27 minutes ago Exited

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

 
   
   
 
  1. $ docker container logs c90c

  2. mkdir: cannot create directory '../sonatype-work/nexus3/log': Permission denied

  3. mkdir: cannot create directory '../sonatype-work/nexus3/tmp': Permission denied

  4. OpenJDK 64-Bit Server VM warning: Cannot open file ../sonatype-work/nexus3/log/jvm.log due to No such file or directory


  5. Warning: Cannot open log file: ../sonatype-work/nexus3/log/jvm.log

  6. Warning: Forcing option -XX:LogFile=/tmp/jvm.log

  7. Unable to update instance pid: Unable to create directory /nexus-data/instances

  8. /nexus-data/log/karaf.log (No such file or directory)

  9. Unable to update instance pid: Unable to create directory /nexus-data/instances

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

 
   
   
 
  1. $ chown -R 200 /data/nexus

  2. $ docker container start c90c62f4bd5d

  3. c90c62f4bd5d

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

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

Nexus NuGet 仓库简单使用

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

Nexus 默认帐号

Nexus 的默认管理员账号 admin,密码 admin123 。可以在 Nexus 管理界面右上角 Signin 按钮可以登录Nexus。登录完成之后可以点击下面图片齿轮图标,进行管理 Nexus 。 
使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)

Repositories

点击右菜单的 Repositories 按钮可以看到 Nexus 内置的默认仓库: 
使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)

Repositories 说明

Nexus 默认已经创建好了 Nuget 以及其他的仓库,并且是创建了3个不同类型的仓库:nuget-groupnuget-hostednuget.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 。

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

  2. 在 解决方案资源管理器 选中 NexusTest 项目右击点击属性。进入项目设置页选择 打包 选项卡。勾选 在版本中胜出NuGet包 。

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

  3. 在 解决方案资源管理器 选中 NexusTest 项目右击点击 生成。生成成功之后在本项目的 binDebug 目录下找到 NexusTest.1.0.0.nupkg Nuget 文件,代表 Package 已经准备完成。

上传 Package

  1. 添加 Nuget Realms,因为 Nexus 认证 Nuget 是通过 Realms 来认证,因此要添加 Nuget Realms。

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

  2. 在 Upload 选中 nuget-hosted 点击进入,为什么要选中 nuget-hosted 上面已经说明。

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

  3. 把上面准备好的 NexusTest.1.0.0.nupkg Nuget 文件上传到 Nexus。

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

  4. 第三步上传成功,在 Browse 选中 nuget-hosted 点击进入。可以查看到已经上传成功。

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

使用 Package

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

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

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

  4. 通过 Nuget 管理器 查询一下刚刚我们上传的 NexusTest 包。

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


总结

Nexus 基本可以满足企业的私服需求,而且还有一个可视化工具进行管理,降低企业管理成本。

引用:

Nexus 镜像详细说明:https://hub.docker.com/r/sonatype/nexus3/ 
使用 Nexus 搭建私有 Nuget 仓库:http://www.cnblogs.com/Erik_Xu/p/9211471.html 
Linux的权限:https://www.cnblogs.com/lhm166/articles/6605059.html 
关闭防火墙:https://blog.csdn.net/ytangdigl/article/details/79796961

使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)
转载是一种动力 分享是一种美德
使用 Nexus3镜像搭设私有仓库(Bower 、Docker、Maven、npm、NuGet、Yum、PyPI)

如果喜欢作者的文章,请关注“magiccodes”订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


编程交流群<85318032> 

产品交流群<897857351>


长沙线下技术社区已经创建,有兴趣者可以通过客服加群。接下来,我们会定期组织一些线下技术交流分享会,以飨大家。



原文链接:

https://www.cnblogs.com/lfzm/p/10606524.html

以上是关于使用 Nexus3镜像搭设私有仓库(Bower DockerMavennpmNuGetYumPyPI)的主要内容,如果未能解决你的问题,请参考以下文章

docker私服搭建nexus3

使用docker搭建nexus并配置docker私有仓库

使用docker搭建nexus并配置docker私有仓库

使用docker搭建nexus并配置docker私有仓库

使用 Nexus Repository Manager 搭建私有docker仓库

Nexus Repository Manager 搭建私有docker仓库