flnxi-Wu/docs/archive/在git.1080p.hk部署镜像仓库指南.md
WuYongJie 63ec6b7dfb fix: 修复排行榜按钮消失、tag排序和输入框浅色模式问题
1. 排行榜悬浮窗关闭后小按钮消失问题
   - 修复面板居中模式关闭时按钮位置错误
   - 保存并恢复按钮的居中状态

2. 首页tag按钮按素材数量排序
   - 添加按素材数量降序排序逻辑

3. 上传弹窗输入框浅色模式文字不可见
   - 添加 text-slate-900 确保浅色模式下文字可见
   - 添加 placeholder 样式确保占位符正确显示
2025-12-14 21:41:29 +08:00

9.1 KiB
Raw Blame History

在 git.1080p.hk 服务器部署 Docker 镜像仓库指南

📋 重要说明

Git 仓库 ≠ Docker 镜像仓库

  • Git 仓库(如 http://git.1080p.hk/WuYongJie/flnxi-Wu):用于存储源代码
  • Docker 镜像仓库(Registry):用于存储Docker 镜像(编译后的二进制文件)

不能在 Git 仓库中存储 Docker 镜像,需要单独部署 Docker Registry 服务。


🏗️ 推荐方案

方案1:在同一服务器上部署 Docker Registry(推荐)

如果 git.1080p.hk 是您的服务器,可以在同一台服务器上部署 Docker Registry。

优点:

  • ✅ 无需额外服务器
  • ✅ 统一管理
  • ✅ 内网访问速度快

架构:

git.1080p.hk 服务器
├── Gitea (端口: 3000)          # Git代码仓库
└── Docker Registry (端口: 5000)  # Docker镜像仓库

方案2:创建独立的镜像仓库服务器

如果希望分离,可以创建:

  • registry.1080p.hk - 专门用于Docker镜像仓库
  • git.1080p.hk - 继续用于Git代码仓库

🚀 部署步骤(方案1:同一服务器)

1. 在 git.1080p.hk 服务器上部署 Docker Registry

1.1 使用 Docker 运行 Registry

# SSH登录服务器
ssh root@git.1080p.hk

# 创建存储目录
mkdir -p /var/lib/docker-registry
chmod 755 /var/lib/docker-registry

# 运行 Docker Registry(HTTP版本,内网使用)
docker run -d \
  --name docker-registry \
  --restart=always \
  -p 5000:5000 \
  -v /var/lib/docker-registry:/var/lib/registry \
  registry:2

# 验证运行
docker ps | grep registry
curl http://localhost:5000/v2/

1.2 配置 HTTPS(生产环境推荐)

# 创建证书目录
mkdir -p /etc/docker/registry

# 生成自签名证书(或使用已有证书)
openssl req -x509 -newkey rsa:4096 -nodes \
  -keyout /etc/docker/registry/domain.key \
  -out /etc/docker/registry/domain.crt \
  -days 365 \
  -subj "/CN=registry.1080p.hk"

# 使用HTTPS运行
docker stop docker-registry
docker rm docker-registry

docker run -d \
  --name docker-registry \
  --restart=always \
  -p 5000:5000 \
  -v /etc/docker/registry:/certs \
  -v /var/lib/docker-registry:/var/lib/registry \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_PRIVATE_KEY=/certs/domain.key \
  registry:2

1.3 配置 Nginx 反向代理(可选,推荐)

如果服务器已有 Nginx,可以配置反向代理:

# /etc/nginx/sites-available/docker-registry
server {
    listen 80;
    server_name registry.1080p.hk;

    # 重定向到HTTPS
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name registry.1080p.hk;

    ssl_certificate /etc/docker/registry/domain.crt;
    ssl_certificate_key /etc/docker/registry/domain.key;

    # 允许大文件上传
    client_max_body_size 0;
    chunked_transfer_encoding on;

    location / {
        proxy_pass http://localhost:5000;
        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;
        
        # Docker Registry 特殊配置
        proxy_set_header X-Forwarded-Host $host;
        proxy_set_header X-Forwarded-Port $server_port;
    }
}
# 启用配置
ln -s /etc/nginx/sites-available/docker-registry /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

2. 配置镜像仓库地址

2.1 在构建服务器上配置

编辑 /etc/docker/daemon.json:

{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ],
  "insecure-registries": [
    "git.1080p.hk:5000",
    "registry.1080p.hk:5000"
  ]
}

如果使用HTTPS,移除 insecure-registries,配置证书:

# 复制证书到客户端
scp root@git.1080p.hk:/etc/docker/registry/domain.crt /etc/docker/certs.d/git.1080p.hk:5000/ca.crt

# 或使用域名
mkdir -p /etc/docker/certs.d/registry.1080p.hk:5000
scp root@git.1080p.hk:/etc/docker/registry/domain.crt /etc/docker/certs.d/registry.1080p.hk:5000/ca.crt

2.2 重启 Docker

sudo systemctl daemon-reload
sudo systemctl restart docker

3. 构建和推送镜像

3.1 构建镜像

# 在本地或构建服务器上
cd /path/to/flnxi_sucai

# 构建标准版
docker build -t git.1080p.hk:5000/flnxi-material:standard-latest .

# 构建Pro版(使用相同Dockerfile,通过环境变量区分)
docker build -t git.1080p.hk:5000/flnxi-material:pro-latest .

3.2 推送镜像

# 登录(如果需要认证)
docker login git.1080p.hk:5000

# 推送标准版
docker push git.1080p.hk:5000/flnxi-material:standard-latest

# 推送Pro版
docker push git.1080p.hk:5000/flnxi-material:pro-latest

# 推送带版本号的镜像
docker tag git.1080p.hk:5000/flnxi-material:standard-latest \
  git.1080p.hk:5000/flnxi-material:standard-$(date +%Y%m%d)
docker push git.1080p.hk:5000/flnxi-material:standard-$(date +%Y%m%d)

4. 更新配置文件

4.1 更新 docker-compose 文件

标准版 (docker-compose.standard.yml):

app:
  image: git.1080p.hk:5000/flnxi-material:standard-${IMAGE_TAG:-latest}

Pro版 (docker-compose.prod.yml):

app:
  image: git.1080p.hk:5000/flnxi-material:pro-${IMAGE_TAG:-latest}

4.2 更新环境变量示例

# .env 文件
DOCKER_REGISTRY=git.1080p.hk:5000
IMAGE_TAG=latest

🔒 安全配置(可选但推荐)

1. 启用认证

# 创建认证目录
mkdir -p /auth

# 创建用户密码文件
docker run --entrypoint htpasswd httpd:2 \
  -Bbn registry-user your-secure-password > /auth/htpasswd

# 使用认证运行Registry
docker stop docker-registry
docker rm docker-registry

docker run -d \
  --name docker-registry \
  --restart=always \
  -p 5000:5000 \
  -v /auth:/auth \
  -v /var/lib/docker-registry:/var/lib/registry \
  -e "REGISTRY_AUTH=htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
  -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \
  registry:2

客户端登录:

docker login git.1080p.hk:5000
# 输入用户名: registry-user
# 输入密码: your-secure-password

2. 配置防火墙

# 只允许内网访问(推荐)
ufw allow from 192.168.0.0/16 to any port 5000
ufw allow from 10.0.0.0/8 to any port 5000

# 或允许特定IP
ufw allow from 客户服务器IP to any port 5000

📝 使用 Docker Compose 管理 Registry(推荐)

创建 docker-compose-registry.yml:

version: '3.8'

services:
  registry:
    image: registry:2
    container_name: docker-registry
    restart: unless-stopped
    ports:
      - "5000:5000"
    volumes:
      - /var/lib/docker-registry:/var/lib/registry
      - /etc/docker/registry:/certs
      - /auth:/auth
    environment:
      - REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt
      - REGISTRY_HTTP_TLS_PRIVATE_KEY=/certs/domain.key
      - REGISTRY_AUTH=htpasswd
      - REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd
      - REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm
    networks:
      - registry-network

networks:
  registry-network:
    driver: bridge

管理命令:

# 启动
docker compose -f docker-compose-registry.yml up -d

# 停止
docker compose -f docker-compose-registry.yml down

# 查看日志
docker compose -f docker-compose-registry.yml logs -f

✅ 验证部署

1. 检查 Registry 运行状态

# 检查容器
docker ps | grep registry

# 测试API
curl http://git.1080p.hk:5000/v2/

# 查看镜像列表(需要认证)
curl -u registry-user:your-secure-password \
  http://git.1080p.hk:5000/v2/_catalog

2. 测试镜像推送和拉取

# 测试推送
docker pull alpine:latest
docker tag alpine:latest git.1080p.hk:5000/test:latest
docker push git.1080p.hk:5000/test:latest

# 测试拉取
docker pull git.1080p.hk:5000/test:latest

🔄 更新部署脚本

更新 scripts/deploy/local-build-and-upload.ps1,添加镜像推送功能:

# 在构建完成后添加
Write-Step "推送镜像到私有仓库..."

# 登录镜像仓库
docker login ${DockerRegistry} -u ${RegistryUser} -p ${RegistryPassword}

# 推送标准版
docker tag flnxi-material:local-deploy ${DockerRegistry}/flnxi-material:standard-latest
docker push ${DockerRegistry}/flnxi-material:standard-latest

# 推送Pro版(相同镜像,不同标签)
docker tag flnxi-material:local-deploy ${DockerRegistry}/flnxi-material:pro-latest
docker push ${DockerRegistry}/flnxi-material:pro-latest

📋 总结

推荐配置

  1. 镜像仓库地址:git.1080p.hk:5000(HTTP)或 registry.1080p.hk:5000(HTTPS)
  2. 存储位置:/var/lib/docker-registry
  3. 认证:启用htpasswd认证(生产环境)
  4. HTTPS:使用Nginx反向代理(生产环境)

客户使用

客户只需要:

  1. 配置镜像仓库地址:DOCKER_REGISTRY=git.1080p.hk:5000
  2. 拉取镜像:docker pull git.1080p.hk:5000/flnxi-material:standard-latest
  3. 部署:使用 docker-compose.standard.yml 或 docker-compose.prod.yml

最后更新:2025-11-15