JDKHOME JDKHOME
  • Web

    • 权限框架Twiggy
    • 脚手架BLZO
  • 杂货
技术思考
  • Kubernetes
  • 文档
  • jdkhome
  • 友链
  • 版权声明
  • 分类
  • 标签
  • 归档
  • Web

    • 权限框架Twiggy
    • 脚手架BLZO
  • 杂货
技术思考
  • Kubernetes
  • 文档
  • jdkhome
  • 友链
  • 版权声明
  • 分类
  • 标签
  • 归档
  • nexus搭建

    • 需求和背景
      • 搭建
        • 准备ssl证书
        • 使用docker部署nexus
      • docker私仓配置
        • maven私仓添加阿里云仓库
          • 验证/使用
          linkji
          2020-09-12
          随笔

          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
          
          1
          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
          
          1
          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
          
          1
          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
          
          
          1
          2
          3
          4
          5
          6
          7
          8

          推镜像需要登陆,拉不需要(可设置)

          如果你希望得到更全面的镜像管理能力,可以使用harbor。不过这个对我来说已经够用了。

          上次更新: 2020/12/24, 21:12:00
          最近更新
          01
          搭建redis
          11-21
          02
          istio安装
          10-25
          03
          搭建K8S高可用集群
          09-13
          更多文章>
          鄂ICP备15015406号 | Copyright © 2015-2020 jdkhome
          • 跟随系统
          • 浅色模式
          • 深色模式
          • 阅读模式