收起左侧

自建docker仓库以及部署对应的汉化网页端

1
回复
452
查看
[ 复制链接 ]

62

主题

73

回帖

0

牛值

小有名气

2025-10-11 20:38:11 显示全部楼层 阅读模式

网页界面镜像是我汉化制作的,欢迎关注我B站账号 秦曱凧 (读作 qín yuē zhēng)
后面有新的项目,会在B站先发,欢迎关注。

项目介绍

这个项目是搭配Docker自建仓库的网页界面。必须要部署Docker官方出的registry镜像才可以。

欢迎start

有需要帮忙部署这个项目的朋友,一杯奶茶,即可程远程帮你部署,需要可联系。
微信号 E-0_0-
闲鱼搜索用户 明月人间
或者邮箱 firfe163@163.com

视频教程

Docker私有仓库部署

compose 方式部署文件内容

name: registry

services:
  registry:
    container_name: registry
    image: registry:3.0.0
    network_mode: bridge
    restart: always
    cpus: 1
    mem_limit: 512m
    logging:
      options:
        max-size: "1m"
        max-file: "3"
    ports:
      - 5000:5000
    volumes:
      - ./data:/var/lib/registry/docker/registry/v2
      # 这个容器指定映射路径,数据在上面的目录中
      - ./data-null:/var/lib/registry
    environment:
      TZ: Asia/Shanghai
      # 允许删除镜像操作
      REGISTRY_STORAGE_DELETE_ENABLED: true

网页界面部署

配合自建镜像仓库registry的网页端。

compose 方式部署文件内容

name: registry-browser

services:
  registry-browser:
    container_name: registry-browser
    image: swr.cn-north-4.myhuaweicloud.com/firfe/drb_zh-cn:1.8.5
    network_mode: bridge
    restart: always
    cpus: 1
    mem_limit: 512m
    logging:
      options:
        max-size: "1m"
        max-file: "3"
    environment:
      TZ: Asia/Shanghai
      TIME_ZONE: Asia/Shanghai
      SECRET_KEY_BASE: docker-registry-browser
      # 在存储库列表上启用折叠的列表
      ENABLE_COLLAPSE_NAMESPACES: true
      # 显示删除操作
      ENABLE_DELETE_IMAGES: true
      # registry地址 按照下面示例的格式,改成自己的
      DOCKER_REGISTRY_URL: http://192.168.1.1:5000
      # 镜像拉取前缀 按照下面示例的格式,改成自己的
      PUBLIC_REGISTRY_URL: 192.168.1.1:5000
    ports:
      - 8080:8080

说明

  • 环境变量
    • ENABLE_DELETE_IMAGES: "true" 允许删除容器
    • PORT 监听端口 默认 8080
    • SECRET_KEY_BASE 加密密钥 必须有
    • ENABLE_COLLAPSE_NAMESPACES: true 在存储库列表上启用折叠的列表
    • CATALOG_PAGE_SIZE: 100 一页最大数量 默认100
    • 子路径
      在同一主机上同时公开 docker-registry APIdocker-registry-browser
      • SCRIPT_NAME: /子路径

      • RAILS_RELATIVE_URL_ROOT: /子路径 对网页设置子路径 默认是管跟路径

      • 配置示例

        environment:
            SCRIPT_NAME: "/browser"
            RAILS_RELATIVE_URL_ROOT: "/browser"
        
      • Nginx 配置
        确保在 /browser/proxy_pass 指令中使用的 URL 末尾添加 /

        server {
          listen 8000;
          server_name 127.0.0.1;
        
          location /browser/ {
            proxy_pass http://127.0.0.1:8080/;
            proxy_set_header Host $http_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;
          }
        
          location /v2/ {
            client_max_body_size 4G;
            proxy_pass http://127.0.0.1:5000;
          }
        }
        
    • PUBLIC_REGISTRY_URL 设置 docker 注册表 URL 的公共版本,并将用于显示自定义 docker pull 命令 默认没有,在网页端一键复制镜像拉取命令
    • 仓库认证
      不写的话需要每次都要在浏览器中填写
      • BASIC_AUTH_USER 允许定义用于针对 docker-registry API 的 HTTP 基本身份验证的用户名
      • BASIC_AUTH_PASSWORD 针对 docker-registry API 的 HTTP 基本身份验证的密码

nginx 设置

通过nginx设置反向代理,把registry的仓库和网页端代理到一个端口上,解决跨域问题

server {
  listen 端口;
  listen [::]:端口;

  # 要添加证书,就用用下面注释的配置
  #listen 端口 ssl;
  #listen [::]:端口 ssl;
  #server_name 域名;
  #ssl_certificate 证书;
  #ssl_certificate_key 私钥;
  #ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;

  location / {
    # 网页端地址
    proxy_pass http://127.0.0.0:1040;
    proxy_set_header Host $http_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;
  }

  location /v2/ {
    # 大小 大于镜像大小
    client_max_body_size 4G;
    # registry 地址
    proxy_pass http://127.0.0.0:5000;
  }
}

效果图

仓库概览.jpg 标签概览.jpg
标签详情.jpg 删除标签.jpg
收藏
送赞
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

3

主题

8

回帖

0

牛值

江湖小虾

2025-10-15 11:57:49 显示全部楼层
整合了一下
* docker-compose.yaml
```yaml
networks:
  registry-network:
    driver: bridge

services:
  registry:
    container_name: docker-registry
    image: registry:3.0.0
    networks:
      - registry-network
    restart: always
    cpus: 1
    mem_limit: 512m
    logging:
      options:
        max-size: "1m"
        max-file: "3"

    volumes:
      - ./data:/var/lib/registry/docker/registry/v2
      # 这个容器指定映射路径,数据在上面的目录中
      - ./data-null:/var/lib/registry
    environment:
      TZ: Asia/Shanghai
      # 允许删除镜像操作
      REGISTRY_STORAGE_DELETE_ENABLED: true

  registry-browser:
    container_name: docker-registry-browser
    image: swr.cn-north-4.myhuaweicloud.com/firfe/drb_zh-cn:1.8.5
    networks:
      - registry-network
    restart: always
    cpus: 1
    mem_limit: 512m
    logging:
      options:
        max-size: "1m"
        max-file: "3"
    environment:
      TZ: Asia/Shanghai
      TIME_ZONE: Asia/Shanghai
      SECRET_KEY_BASE: docker-registry-browser
      # 在存储库列表上启用折叠的列表
      ENABLE_COLLAPSE_NAMESPACES: true
      # 显示删除操作
      ENABLE_DELETE_IMAGES: true
      # registry地址 使用容器名进行内部通信
      DOCKER_REGISTRY_URL: http://docker-registry:5000
      # 镜像拉取前缀 使用容器名进行内部通信
      PUBLIC_REGISTRY_URL: docker-registry:5000


  registry-nginx:
    container_name: registry-nginx
    image: nginx:latest
    networks:
      - registry-network
    restart: always
    cpus: 1
    mem_limit: 512m
    logging:
      options:
        max-size: "1m"
        max-file: "3"
    ports:
      - 30080:80
      - 30443:443
    volumes:
      - ./nginx.conf:/etc/nginx/conf.d/default.conf
      # 如果需要 SSL 证书,取消下面的注释并创建 ssl 目录
      # - ./ssl:/etc/nginx/ssl
    depends_on:
      - registry
      - registry-browser
  • nginx.conf
server {
  listen 80;
  listen [::]:80;

  # 要添加证书,就用用下面注释的配置
  #listen 443 ssl;
  #listen [::]:443 ssl;
  #server_name your-domain.com;
  #ssl_certificate /etc/nginx/ssl/cert.pem;
  #ssl_certificate_key /etc/nginx/ssl/key.pem;
  #ssl_protocols TLSv1.2 TLSv1.3;

  # 设置客户端最大请求体大小,用于大镜像上传
  client_max_body_size 4G;

  # Registry Browser 网页端
  location / {
    proxy_pass http://docker-registry-browser:8080;
    proxy_set_header Host $http_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;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Forwarded-Port $server_port;
  
    # 支持 WebSocket 连接
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
  
    # 超时设置
    proxy_connect_timeout 60s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;
  }

  # Docker Registry API 接口
  location /v2/ {
    proxy_pass http://docker-registry:5000;
    proxy_set_header Host $http_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;
    proxy_set_header X-Forwarded-Host $server_name;
    proxy_set_header X-Forwarded-Port $server_port;
  
    # 支持大文件上传
    client_max_body_size 4G;
    proxy_request_buffering off;
  
    # 超时设置
    proxy_connect_timeout 300s;
    proxy_send_timeout 300s;
    proxy_read_timeout 300s;
  }

  # 健康检查端点
  location /health {
    access_log off;
    return 200 "healthy\n";
    add_header Content-Type text/plain;
  }
}

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则