nexus搭建
# nexus搭建
# 需求和背景
我需要一个maven私仓 和 一个docker私仓,那么用nexus就正好能够完美满足我的需求。
由于docker客户端拉镜像默认都是https 所以我需要弄个开启ssl的nexus。
官方的nexus镜像默认也是没有ssl的,开启需要自己修改实现,比较麻烦。
于是我找到了bradbeck/nexus-https 给这为老哥点赞
网上大部分教程 要么是套一个nginx 要么是改包 /// 所以应该没有比我这更全更简单的了
# 搭建
# 准备ssl证书
可以是自己生成,也可以是从证书服务商去申请。
简单说下两者优缺点:
自己生成的证书不要钱,并且证书有效期可以设的非常长(比如99年),缺点就是新装的机器不认可你的证书,每个要使用该服务的机器都需要配置信任证书才能使用,比较麻烦。
服务商申请的证书,其实也有免费的版本,不过每个域名有数量限制。但优点就是,新机器可以直接从证书服务商那里验证证书,不需要每台机器都配置。虽然申请的证书有有效期,但是是可以续期的。
综合考虑下,我这里用的是申请的证书,但如果是公司内网使用,强烈建议用自己生成的。
我将证书放置到了 /data/ssl 目录
# pwd
/data/ssl
# ls
cacert.pem cakey.pem
2
3
4
5
- PS1: cakey.pem 这个文件原来的后缀应该是.key 但是我用到的nexus docker镜像的作者的默认值是cakey.pem 那这里就以他为准
- PS2: nexus需要的是jks格式的证书,常见的pem格式还有key格式的需要转换才可使用,这里镜像作者已经提供了转换,所以准备pem格式的即可
# 使用docker部署nexus
避免踩坑,这里直接给个最大权限
mkidr -p /data/nexus-data
chmod -R 777 /data/nexus-data
2
docker run -d \
--restart=always \
--name nexus \
-p 8081:8081 \
-p 8443:8443 \
-p 8543:8543 \
-v /data/nexus-data:/nexus-data \
-v /data/ssl:/opt/sonatype/nexus/etc/ssl \
-e PUBLIC_CERT_SUBJ=/CN={{证书对应的域名或者ip}} \
-e PRIVATE_KEY_PASSWORD={{生成jks证书的密码,自定义即可}} \
bradbeck/nexus-https
2
3
4
5
6
7
8
9
10
11
启动后在 /data/nexus-data/admin.password 中查看admin账号的密码
# docker私仓配置
maven私仓默认就有,无需配置,这里说下docker私仓
首先创建一个存储区,名字可以自定,我这里是docker-hub
接着创建docker镜像仓库
如图所示,进去之后类型选择 docker(hosted)
前面启动镜像多加的8543端口就是为了这里设置时使用
开启登陆权限
# maven私仓添加阿里云仓库
依赖时先去私服依赖包,假如私服没有,私服去阿里云找包,找到后返回给依赖方
如下图,点击Repositories,右边点击Create repository,在接下来的页面选择“maven2 proxy”
在具体配置页面取名aliyun-repository
URL输入:http://maven.aliyun.com/nexus/content/groups/public/,其他默认值即可。
# 验证/使用
# docker login hub.jdkhome.com:8543
Authenticating with existing credentials...
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store
Login Succeeded
2
3
4
5
6
7
8
推镜像需要登陆,拉不需要(可设置)
如果你希望得到更全面的镜像管理能力,可以使用harbor。不过这个对我来说已经够用了。