我们在日常开发中经常需要使用到私有仓库,比如 dotNET 中的 NuGet、Java 中的 Maven、前端的 npm,还有 Docker 镜像,每一个私有仓库各自管理,维护起来比较麻烦,而 Nexus 可以将其统一起来。

本文将介绍 Nexus 的安装以及怎样进行 NuGet 、Maven、npm 和 Docker 镜像的管理。

环境

  • Nexus:3.29.2

  • NuGet:5.5.1

  • Maven:3.6.3

  • NPM:6.14.8

  • Docker:19.03.13

  • 操作系统:CentOS 7

安装

可以使用直接在服务器进行安装或者使用 Docker 镜像的方式安装,本文采用 Docker 镜像的方式安装。

1、执行下面的命令进行容器的构建。

docker run -d -p 8081:8081 -p 8082:8082 --name nexus_8081 -v /root/data/nexus:/nexus-data --restart=always sonatype/nexus3
  • 命令中的 -v /root/data/nexus:/nexus-data 是将 Nexus 的数据目录映射到本地;

  • nexus 目录需要给编辑的权限;

  • 8082 端口的映射目的是为了推送 docker 镜像。

2、执行下面命令开放端口。

firewall-cmd --zone=public --add-port=8081/tcp --permanent
firewall-cmd --reload

3、构建完后,需要等几十秒到几分钟不等,程序有一个初始化的过程,然后访问 http://ip:8081 ,可以出现下图界面:

4、根据弹窗的提示在映射的目录 /root/data/nexus 中找到 admin.password 中的内容就可以正常登录了。

NuGet

1、在 Repositories 功能中创建 NuGet 的私有仓库 NuGetTest ,仓库模板选择 nuget(hosted) 。

2、在 VS2019 中创建一个 NugetTest 的类库项目,在项目上点击右键→打包,在项目的 bin/Debug 目录中会生成 NugetTest.1.0.0.nupkg 文件。

3、点击「admin」→「NuGet API Key」,在该功能界面获取 key ,这个 key 在推送 NuGet 包时需要用到。

4、将 nuget.exe 程序文件也放到 bin/Debug 目录中,然后打开命令行进入到该目录,执行下面命令进行包的推送。

nuget.exe push NugetTest.1.0.0.nupkg dab3d4df-1eec-36e0-9b75-09b5b4b0ac41 -source http://10.211.55.6:8081/repository/NuGetTest

推送成功如下图:

5、在 VS2019 中的 NuGet 包管理器中添加源。

6、在引用时选择添加的 NuGetTest 源,如下图:

Maven

1、在 Repositories 功能中创建 Maven 的私有仓库 MavenTest ,仓库模板选择 maven(hosted),Deployment policy 需要设置为 Allow redeply,否则在推送时会报 400 的错误。

2、在 Maven 的配置文件 /apache-maven-3.6.3/conf/settings.xml 中的 Servers 节点添加 Server 配置,如下:

<server><id>releases</id><username>test</username><password>000000</password>
</server>
  • username 和 password 是在 Nexus 中创建的测试账户;

  • id 需要和 Maven 项目中的 pom.xml  文件中配置的 id 一致。

3、在 IntelliJ IDEA 中创建 Maven 项目 MavenTest,在项目中的 pom.xml 文件中添加如下内容:

<distributionManagement><repository><id>releases</id><name>releases</name><url>http://10.211.55.6:8081/repository/MavenTest/</url></repository>
</distributionManagement>
  • id:和上面的 settings.xml  文件中的 id 一致即可;

  • url:在 Nenux 中创建的 Maven 仓库的地址。

4、因为仓库创建的是 Release 版本的,如果 pom.xml 文件的 version 中包含 SNAPSHOT ,需要删除,否则在推送时会报 400 的错误。

5、在 IDEA 工具的 Maven 模块中进行 depoly 。

6、推送成功后,在 Nexus 中可以看到如下内容:

7、创建一个 spring boot 的项目,并修改 pom.xml 文件,在 dependencies 节点添加依赖,并添加 repositories 配置,如下:

<dependencies><dependency><groupId>org.example</groupId><artifactId>MavenTest</artifactId><version>1.0</version></dependency>
</dependencies>
<repositories><repository><id>releases</id><name>releases</name><url>http://10.211.55.6:8081/repository/MavenTest/</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></repository>
</repositories>

8、在 IDEA 中的 build 模块中进行同步就可以将 maven 包拉取到项目中。

NPM

1、在 Repositories 功能中创建 npm 的私有仓库 NpmTest ,仓库模板选择 npm(hosted),Deployment policy 需要设置为 Allow redeply,否则在推送时会报 400 的错误。

2、使用 vue 创建一个项目 nexus-test 。

3、使用下面命令进行本地注册,后面的地址为创建的 npm 私有库的地址。

npm config set registry http://10.211.55.6:8081/repository/NpmTest/

4、想要将自己的 npm 包推送到私有仓库中,需要先使用下面的命令进行登录。

npm login –registry=http://10.211.55.6:8081/repository/NpmTest/

5、修改 vue 项目根目录中的 package.json 文件,将 private 设置为 false ,版本号 version 根据需要进行修改。

6、在 Nexus 的 Realms 模块进行设置,将 npm Bearer Token Realm 选到右边的 Active 栏中,此处不设置,在推送时会出现 401 的错误。

7、执行下面命令进行包的推送:

npm publish --registry=http://10.211.55.6:8081/repository/NpmTest

8、创建一个新的 vue 项目 nexus-test1 来进行私有仓库的使用,先进行仓库地址的注册。

npm config set registry http://10.211.55.6:8081/repository/NpmTest/

9、执行 npm install nexus-test 进行包的安装,安装成功如下图:

Docker

1、在 Repositories 功能中创建 docker 的私有仓库 DockerTest ,仓库模板选择 docker(hosted) 。

  • 勾选 http,设置端口为 8082 ,此处的端口为创建 Nexus 容器时设置的 8082 端口 ;

  • 勾选允许匿名拉取镜像;

  • 勾选运行客户端通过 API 访问。

2、在 Nexus 的 Realms 模块进行设置,将 Docker Bearer Token Realm 选到右边的 Active 栏中。

3、在 CentOS 7 系统中安装 Docker ,然后再 /etc/docker/ 目录中创建 daemon.json 文件,内容如下:

{"insecure-registries": ["10.211.55.6:9999"]
}

4、执行下面命令进行配置的加载。

systemctl daemon-reload
systemctl restart docker

5、在 root 目录中创建 nexus-docker 目录,目录中创建 Dockerfile 文件用来构建一个新的镜像,内容如下:

FROM nginx:latest
COPY . /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

6、执行下面命令进行镜像的构建和推送到服务端。

# 构建镜像
docker build -t nexus-docker .
# 将镜像 tag 成服务端的地址
docker tag nexus-docker-test:latest 10.211.55.6:8082/nexus-docker-test:latest
# 进行登录
docker login -u test -p 000000 10.211.55.6:8082
# 推送镜像
docker push 10.211.55.6:8082/nexus-docker-test:latest

操作成功如下图所示:

7、使用镜像的时候,只要服务器进行了第三步中的地址注册,就可以使用 docker pull 10.211.55.6:8082/nexus-docker-test:latest 进行镜像拉取。

希望本文对您有所帮助!

Nexus:一站式私有仓库管理(NuGet、Maven、npm、Docker)相关推荐

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

    Docker - 使用 Nexus3 搭设私有 NuGet 仓库 Nexus 默认帐号 Repositories 上传组件包(Package) Repositories 说明 准备 Package 上 ...

  2. Nexus搭建私有Maven仓库用户角色创建和权限分配

    Nexus搭建私有Maven仓库用户角色创建和权限分配 前提:已经搭建好私有仓库,并且可以正常访问,搭建方式可根据官方文档操作 在浏览器中打开控制台,并使用admin账号进行登录 1. 创建Repos ...

  3. Nexus 搭建私有镜像仓库

    Nexus 搭建私有镜像仓库 说明 国内网络环境下直接使用默认的 npm 下载资源过慢,所以很多文章中都建议将 npm 的 registry 切换为 淘宝的 npm 镜像,如下 npm config ...

  4. Kubesphere流水线集成(Git、Maven、Docker、K8S)

    目录 1. Kubesphere开启Devops 2. Kubesphere基础环境设置 3. Devops项目添加凭证 3.1 Git代码库凭证 3.2 Docker镜像仓库凭证 3.3 K8s配置 ...

  5. 怎样在nexus 中 搜索到远程maven仓库中的jar 文件

    怎样在nexus 中 搜索到远程maven仓库中的jar 文件 url: http://www.oschina.net/question/95712_21999 点击Administration菜单下 ...

  6. daemon.json无法启动docker_devops一键部署|详解如何搭建git+maven+jenkins+docker

    流程及原理 流程梳理: 微服务一键部署实现后只需要将测试好的代码提交至版本管理工具(如:git.SVN),程序会自动实现更新代码并打包发布等后面的流程,省心省力. 实现过程 前置环境: 默认已经装好J ...

  7. maven和docker_与Maven和Docker的集成测试

    maven和docker Docker是其中的新热点之一. 与传统虚拟机相比,它具有一组不同的技术和思想,并通过容器的思想实现了相似但同时又有所不同的东西:几乎所有VM都具有强大的功能,但速度更快,并 ...

  8. 与Maven和Docker的集成测试

    Docker是其中的新热点之一. 与传统虚拟机相比,它具有一套不同的技术和思想,并通过容器的思想实现了相似但同时又有所不同的事物:几乎所有VM都具有强大的功能,但速度更快,并且具有非常有趣的附加功能. ...

  9. maven集成docker插件进行打包镜像并推送私服

    使用maven进行集成docker打包成镜像以及推送到docker私服 先水几句 我不会开场啊-默默无闻的送码人.不是吧不是吧.现在还有人用maven打包,然后手动上传jar.然后进行部署吗?你out ...

最新文章

  1. 加速、能耗与对抗攻击:5位顶会作者解析2020 AI系统关键挑战
  2. python爬火车票_python爬取12306火车余票程序(一)
  3. C语言 | C语言中的输出函数:printf()
  4. 【30分钟学完】canvas动画|游戏基础(1):理论先行
  5. 关于 SAP WebIDE 不支持 ES6 语法的问题
  6. Codeforces Beta Round #17 C. Balance DP
  7. python 微信支付接口 详解_Python支付接口汇总大全(包含微信、支付宝等,长期更新、欢迎补充)...
  8. 互联网晚报 | 9月13日 星期一 | 美赞臣中国易主春华资本;美团外卖首次公开骑手配送时间算法;北京教培行业开展同业互助...
  9. 数据结构上机实践第八周项目2- 建立链串的算法库
  10. excel批量删除密码解除密码保护 可多个密码
  11. Java基础 第一节 第一课
  12. 计算机用户名取名,重命名电脑用户名
  13. linux系统如何看懂日志信息,Linux系统查看日志信息总结
  14. 《Delta-Sigma数据转换器从入门到精通》笔记之漫谈均值
  15. 美女主持直播,被突发意外打断!湾区网友却高喊: 我懂!超甜
  16. 两年嵌入式总结--面试
  17. 必应词典NABC分析
  18. Excel VBA实例
  19. 玩转Jetson Nano(二):远程桌面
  20. 8051单片机有几个存储器地址空间?画出它的存储器结构图

热门文章

  1. scatter函数_matplotlib.pyplot常用函数scatter讲解大全(三)
  2. 正则表达式如何匹配正反斜杠
  3. 版本控制介绍以及常用的版本控制工具
  4. 实践卡尔曼滤波--小球追踪
  5. C/C++语言的特点
  6. (二)Harbor WEB的使用
  7. js最全的十种跨域解决方案
  8. 如果你喜欢上了一个程序员小伙 献给所有程序员女友(来自ITeye博客的文章 作者:talent2012)...
  9. Struts2和Struts1的不同
  10. 同步您的Google Chrome书签,主题等