个人亲自录制全套DevOps系列实战教程:手把手教你玩转DevOps全栈技术
(资料图片仅供参考)
Maven私有仓库,就不多说了,我们这里选用最新的Nexus3的3.17版本,平时公司使用的都是Nexus 2.x,新的3.x版本做了很多的升级,包括存储方式等,
这里选用新版本的一个原因就是也想了解下新版本的变化。
参考官网:https://help.sonatype.com/repomanager3/installation-and-upgrades/installation-methods
# 此处我们选择3.17版本,因为3.18版本采用的是red hat,3.18之前是centosdocker pull sonatype/nexus3:3.17.0
注意:
宿主机需提前创建/docker/nexus3/data目录,用于和容器的数据目录进行映射,
# 值得注意的是nexus3容器内会使用200这个用户去执行操作# 所以/docker/nexus3/data需要给200授权,为了方便我使用的是777权限。chmod -R 777 /docker/nexus3/data
# 在/docker/nexus3目录创建vi docker-compose.ymlversion: "3"services: nexus3: image: "sonatype/nexus3:3.17.0" restart: always container_name: "nexus3" hostname: "nexus3" environment: - NEXUS_CONTEXT=nexus # 默认不指定上下文为根/,这是和nexus2不同的地方 ports: - "9081:8081" networks: - "exist-net-bloom" volumes: - "/docker/nexus3/data:/nexus-data" - "/etc/timezone:/etc/timezone:ro" - "/etc/localtime:/etc/localtime:ro"networks: exist-net-bloom: external: name: devops
查看密码:进入容器的cat /nexus-data/admin.password文件中查看。
# 入口:# http://10.10.1.199:9081/nexus/ # 注意如果去掉NEXUS_CONTEXT=nexus的设置,入口就是http://10.10.1.199:9081/用户名:admin
hosted:maven-releases、maven-snapshots,接收客户端提交过来的依赖包(jar包,mvn deploy),也可从中心库下载依赖包。在2.x老版本中还会有一个3th party库,用来从第三方获取jar包然后上传到该库中管理。proxy:maven-central,正常客户端下载依赖包顺序,优先查找hosted库是否存在,不存在则通过proxy库到中心库查找并下载保存到本地仓库。group:maven-public,这个仓库就是前两个的汇总,它包含所有仓库的依赖包。
/mvnrepo/repo distributionManagement->repository->id相匹配 -- > nexus3 admin 123456 omv-releases admin 123456 omv-snapshots admin 123456 omv-profile omv-central http://10.10.1.199:9081/nexus/repository/maven-public/ true true aliyun aliyun Repository https://maven.aliyun.com/repository/public false omv-central-plugin http://10.10.1.199:9081/nexus/repository/maven-public/ true true omv-profile 指定的 的id对应的仓库,就是如果要访问屏蔽的仓库,会被重定向到url指向的仓库 -- > omv-mirror central https://maven.aliyun.com/repository/public
关于中心仓库:
通过镜像方式重定向中心仓库只是其中是一种方式,也可以在nexus的web页面,直接将maven-central这个代理仓库代理的中心仓库改成我们期望的仓库。
比如还可以在nexus中增加一个proxy的maven-cental,让他直接代理阿里云仓库,这样上边的镜像到的url就可以直接使用自己的私服nexus地址了。
settings.xml中定义了拉取依赖的库(私服和阿里云),那下边我们来定义通过maven打包后部署jar包到哪个库的配置,即怎么向nexus上传分发。
,id要和这里的id一致 -- > xxx-RELEASE的包都会上传到release库 -- > omv-releases Releases http://10.10.1.199:9081/nexus/repository/maven-releases/ omv-snapshots Snapshot http://10.10.1.199:9081/nexus/repository/maven-snapshots/
问题:当我们打包deploy时会报权限问题答案:因为nexus设置了鉴权,所以需要授权,授权需要settings.xml中配置,id要和这里的id一致
关于loger error:通过nexus的日志,我们发现有一个ssl的请求超时,他是去访问国外网站了,鉴于这个功能我们不使用,所以直接屏蔽掉
路径:admin登录->System->Capabilities->Outreach: Management->Disable
根据官方文档描述这是一个从仓库对外提供数据的插件,因为nexus3升级后不只是maven仓库还可以做其他仓库,比如docker,而这个功能看上去和maven没什么关系。