zoukankan      html  css  js  c++  java
  • nginx+ssl+Portus+registry docker仓库

    还存在的问题,如果通过nginx 转发推过去的镜像,在web页面显示比较慢,需要等定时任务发现了才能及时显示出来,如果通过b.p.xxx.cn:5000加端口push 的镜像就比较快显示出来。只影响到显示,不影响正常使用。

    获取代码:git clone https://github.com/SUSE/Portus.git

    cd Portus

    vim docker-compose.yml

    PS:   portus 这个项目更换镜像的话,就需要重新创建管理员账号,既然不是保存在MYSQL里面的,奇葩。(所以下次mysql也直接用docker启就可以了)

    模板:

    version: '2'
    
    services:
      portus:
        build: .
        image: opensuse/portus:development    #默认不是这个镜像,默认的镜像有BUG作者说改成这个可以正常运行
        command: bash /srv/Portus/examples/development/compose/init
        environment:
          - PORTUS_MACHINE_FQDN_VALUE=b.p.xxx.cn   #域名,认证使用
          - PORTUS_PUMA_HOST=0.0.0.0:3000
    
          - PORTUS_DB_HOST=db
          - PORTUS_DB_PASSWORD=portus
    
          - RAILS_SERVE_STATIC_FILES=true
        ports:
          - 3000:3000
        links:
          - db
        volumes:
          - .:/srv/Portus   #这几个项目共用一份代码,否者授权的时候有异常,会出现不用登录也能获取镜像
    
      crono:
        image: opensuse/portus:development
        command: ./bin/crono
        depends_on:
          - portus
        environment:
          - PORTUS_MACHINE_FQDN_VALUE=b.p.xxx.cn
    
          - PORTUS_DB_HOST=db    #域名,认证使用 
          - PORTUS_DB_PASSWORD=portus
        volumes:
          - .:/srv/Portus
        links:
          - db
    
      webpack:
        image: kkarczmarczyk/node-yarn:6.9-slim
        command: bash /srv/Portus/examples/development/compose/bootstrap-webpack
        working_dir: /srv/Portus
        volumes:
          - .:/srv/Portus
    
      db:
        image: library/mariadb:10.0.23
        environment:
          MYSQL_ROOT_PASSWORD: portus
    
      registry:
        image: library/registry:2.3.1
        environment:
          REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /registry_data
          REGISTRY_STORAGE_DELETE_ENABLED: "true"
    
          REGISTRY_HTTP_ADDR: 0.0.0.0:5000
          REGISTRY_HTTP_DEBUG_ADDR: 0.0.0.0:5001
    
          REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE: /etc/docker/registry/portus.crt
    
          REGISTRY_AUTH_TOKEN_REALM: http://b.p.xxx.cn:3000/v2/token
          REGISTRY_AUTH_TOKEN_SERVICE: b.p.xxx.cn:5000
          REGISTRY_AUTH_TOKEN_ISSUER: b.p.xxx.cn
    
          REGISTRY_NOTIFICATIONS_ENDPOINTS: >
            - name: portus
              url: http://b.p.xxx.cn:3000/v2/webhooks/events
              timeout: 2000ms
              threshold: 5
              backoff: 1s
        volumes:
          - /registry_data:/registry_data  #这个目录是保存仓库镜像的,挂载出来永久保存
          - ./examples/development/compose/portus.crt:/etc/docker/registry/portus.crt:ro  #这个是Portus的密钥,交互用的
        ports:
          - 5000:5000
          - 5001:5001
        links:
          - portus

     我使用的这个版本有BUG,进过查看日志,发现同时还需要修改文件:

    vim config/config.yml

    206 machine_fqdn:
    207   value: "b.p.xxx.cn"  #改成自己的地址

    然后docker-compose up 启动即可。

     访问web页面: b.p.xxx.cn:3000

    需要填写仓库地址,两个都添加 b.p.xxx.cn:5000即可。

    由于其他人访问需要经过https:下面给出 nginx + ssl 的配置

    vim b.p.xxx.cn.conf

    upstream klg-registry {                                                                                                                                       
        server registry:5000 weight=1;                                                                                                                            
        }                                                                                                                                                         
                                                                                                                                                                  
    server {                                                                                                                                                      
            listen  443;                                                                                                                                          
            server_name b.p.xxx.cn;                                                                                                                            
            ssl on;                                                                                                                                               
            ssl_certificate /nas/conf/tenginx/vhost/Nginx/1_b.p.xxx.cn_bundle.crt;                                                                             
            ssl_certificate_key /nas/conf/tenginx/vhost/Nginx/2_b.p.xxx.cn.key;                                                                                
            location /{                                                                                                                                           
                    client_max_body_size   10000m;                                                                                                                
                    proxy_pass  http://klg-registry;                                                                                                              
                    proxy_set_header   Host    $host;                                                                                                             
                    proxy_set_header   X-Real-IP   $remote_addr;                                                                                                  
                    proxy_set_header   X-Forwarded-For $proxy_add_x_forwarded_for;                                                                                
                    proxy_set_header   X-Forwarded-Proto  $scheme;                                                                                                
            }                                                                                                                                                     
            access_log  /var/log/tenginx/b.p.xxx.cn.log access;                                                                                                
    }

    我的实例:

    version: '2'
    
    services:
      portus:
        hostname: portus
        image: r.p.xxx.cn/registry:portus2
        environment:
          - PORTUS_MACHINE_FQDN_VALUE=b.p.xxx.cn
          - PORTUS_PUMA_HOST=0.0.0.0:3000
          - PORTUS_DB_HOST=192.168.0.1
          - PORTUS_DB_PASSWORD=portus
          - RAILS_SERVE_STATIC_FILES=true
        ports:
          - 3000:3000
        volumes:
          - /opt/Portus:/srv/Portus
    
      crono:
        image: r.p.xxx.cn/registry:crono-new
        depends_on:
          - portus
        environment:
          - PORTUS_MACHINE_FQDN_VALUE=b.p.xxx.cn
          - PORTUS_DB_HOST=192.168.0.1
          - PORTUS_DB_PASSWORD=portus
        volumes:
          - /opt/Portus:/srv/Portus
    
    
      webpack:
        image: r.p.xxx.cn/registry:webpack-new
        working_dir: /srv/Portus
        volumes:
          - /opt/Portus:/srv/Portus
    
      registry:
        image: r.p.xxx.cn/registry:registry2-new
        hostname: registry
        environment:
          REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY: /registry_data
          REGISTRY_STORAGE_DELETE_ENABLED: "true"
    
          REGISTRY_HTTP_ADDR: 0.0.0.0:5000
          REGISTRY_HTTP_DEBUG_ADDR: 0.0.0.0:5001
    
          REGISTRY_AUTH_TOKEN_ROOTCERTBUNDLE: /etc/docker/registry/portus.crt
    
          REGISTRY_AUTH_TOKEN_REALM: http://b.p.xxx.cn:3000/v2/token
          REGISTRY_AUTH_TOKEN_SERVICE: b.p.xxx.cn:5000
          REGISTRY_AUTH_TOKEN_ISSUER: b.p.xxx.cn
    
          REGISTRY_NOTIFICATIONS_ENDPOINTS: >
            - name: portus
              url: http://b.p.xxx.cn:3000/v2/webhooks/events
              timeout: 2000ms
              threshold: 5
              backoff: 1s
        volumes:
          - /registry_data:/registry_data
          - /opt/Portus/examples/development/compose/portus.crt:/etc/docker/registry/portus.crt:ro
        ports:
          - 5000:5000
          - 5001:5001
        links:
          - portus
  • 相关阅读:
    买书求如何获得折扣使价格最低
    团队开发NABC特点
    《梦断代码》读后感3
    结对开发5
    找水王问题续
    对搜狗输入法的评价
    团队项目之典型用户
    找水王问题
    电梯调度练习
    团队项目用户需求调研报告
  • 原文地址:https://www.cnblogs.com/cp-miao/p/7650136.html
Copyright © 2011-2022 走看看