Flink实战:03.docker部署nexus私仓并发布archetype模板

二维码
| Apr 19, 2020 | 原创

在上一章节中:Flink实战:02.保存项目为archetype模板 ,给大家分享了如何制作一个本地的项目模板,这一节内容我将分享如何如何部署一个 nexus 私仓,并把这个本地 archetype 模板发布到仓库中,以方便团队其他人使用。

nexus 是目前一个比较流行的仓储管理软件,很多公司往往使用它来部署自己公司内部项目的私有仓库,nexus 支持的包管理的系统相当丰富:

Bower  
Docker 
Git  LFS  
Maven  
npm  
NuGet
PyPI  
Ruby Gems  
Yum  
APT  
Conan  
R
CPAN*  Raw (Universal)  
p2   
Helm   
ELPA*  
Go
CocoaPods

可以说 nexus 其实是把众多包管理系统整合了起来,接下来我们将部署一个 maven 的私仓包管理系统。

Docker方式安装

部署 nexus 采用的是 docker 方式,相比物理机,容器部署对于后期集群扩容运维显得非常方便,nexus 采用 docker部署流程也非常简单,原文请点击此处:nexus docker 部署说明

创建数据卷

docker volume create --name nexus-data

容器属于一次性快餐产品,下次重启所有数据会全部丢失,但作为包管理仓储系统,我们需要把实际托管的项目软件包存放到实际的物理硬盘中,在容器中,数据卷(volume) 是持久化存储的一种方式。这里我们创建了一个 nexus-data的数据卷,用来存储 neuxs 所存放的数据。

挂载数据卷并启动

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

启动 8081 端口的http服务,并挂载 nexus-data数据卷。稍等片刻后,访问 http://localhost:8081 地址即可看到该项目的web页面:

在这里插入图片描述

首次打开该页面,对于用户管理员账号默认需要做初始化激活操作,默认用户名为:admin,密码文件存放于 /nexus-data/admin.password 文件中,自行查看即可。

如果是公司内部项目,可能你还会额外配置内网域名解析、多机器负载均衡配置等等。这里不再细说。

配置 mvn 阿里云代理

当我们部署好这个默认 nexus 服务后,理论上可以直接使用,但是这里需要额外做一步工作。maven 默认的中心仓储地址在国内那是相当的慢,因此这里配置一个默认的国内代理仓库中心,以加速 mvn 包的下载体验。

1. 创建 aliyun mvn 代理

首先登录刚才部署 nexus 服务,然后选择:设置RepositoryCreate Repositorymaven2 proxy

在这里插入图片描述

填写一个唯一的名称以及阿里云代理地址,其他选项默认即可。

2. 配置 maven public组

接下来需要把这个阿里云代理仓库配置到 maven public 组下,并且放在首位,即是当通过此源下载软件包时优先使用 aliyun 的代理服务。

在这里插入图片描述

在这里插入图片描述

经过如上配置后,我们的 nexus 私仓搭建完毕,下来我们把上一节制作的项目模板发布到该私仓上去。

发布项目模板到私仓

首先我们需要配置本地的mvn配置文件:settings.xml,替换仓库地址为私仓地址:

<mirror>
    <id>nexus-yuankan</id>
    <mirrorOf>central</mirrorOf>
    <name>Nexus YuanKan</name>
    <url>http://nexus.yuankan.co/repository/maven-public</url>
</mirror>

并且,需要配置私有仓库的账号和密码,用于上传发布代码包使用,当然 nexus 其实也可以手动在线上传代码包,此处采用 mvn 命令行方式,因此还需要配置如下数据:

<server>
  <id>yuankan</id>
  <username>admin</username>
  <password>nexus服务密码</password>
</server>

配置完 settings.xml 配置后,我们还是根据第二节构建项目的 artchetype 文件,具体请参考第二节内容:

# 进入项目目录
cd ~/IdeaProjects/FlinkDemo

# 运行制作 archetype 命令,基于当前项目
mvn archetype:create-from-project

cd target/generated-sources/archetype

我们需要修改编译构建的目录,并修改此目录下的 pom.xml 文件,添加如下分发代码:

<project>
    <distributionManagement>
	   <repository>
	     <id>yuankan</id>
	     <name>Nexus Release Repository</name>
	     <url>http://nexus.yuankan.co/repository/maven-releases/</url>
	   </repository>
    </distributionManagement>
</project>

请注意这里的 idsettings.xml 文件的 id 值需要保持一致,即代表往这个mvn中心发布项目代码。

发布代码

执行如下命令即可发布 archetype 模板文件到 nexus 中:

cd target/generated-sources/archetype
mvn clean deploy -Dmaven.test.skip=true

如果不出意外,项目模板即可发布到你的 nexus私有仓库中,如果希望使用该模板作为创建项目基础结构那么使用命令行或使用第一节提到的可视化配置方式即可。

使用方式

基于命令创建项目:

mvn archetype:generate -DarchetypeGroupId=co.yuankan -DarchetypeArtifactId=FlinkDemo-archetype -DarchetypeVersion=1.9-RELEASE

基于 idea 可视化配置创建项目,请参考第一节:Flink实战:01.创建项目结构

本节分享完毕,感谢你的阅读。

作者:猿谋人 博客:https://yuankan.co