黄中银 3 месяцев назад
Родитель
Сommit
437832618b
2 измененных файлов с 156 добавлено и 1 удалено
  1. 2 1
      cognio/buildDockerImage_u24_docker.ps1
  2. 154 0
      cognio/国内构建详解.md

+ 2 - 1
cognio/buildDockerImage_u24_docker.ps1

@@ -20,7 +20,6 @@ $imageName = "amwpfiqvy/cognio"
 
 # Docker 镜像加速源(随机选择一个,不带 https:// 前缀)
 $dockerMirrors = @(
-    "cf-workers-docker-io-dfw.pages.dev"
     "docker.1panel.live"
     "hub.rat.dev"
     "docker.m.daocloud.io"
@@ -99,6 +98,8 @@ sed -i '1s|^FROM python|FROM \$\{DOCKER_MIRROR\}/library/python|' Dockerfile
 sed -i '1i ARG DOCKER_MIRROR=docker.io' Dockerfile
 echo "添加 apt 国内镜像源..."
 sed -i '/^FROM/a RUN sed -i "s|http://deb.debian.org|https://mirrors.aliyun.com|g" /etc/apt/sources.list.d/debian.sources 2>/dev/null || sed -i "s|http://deb.debian.org|https://mirrors.aliyun.com|g" /etc/apt/sources.list 2>/dev/null || true' Dockerfile
+echo "配置 pip 国内镜像源..."
+sed -i 's|pip install|pip install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com|g' Dockerfile
 echo "正在构建并推送 Docker 镜像..."
 echo "使用镜像加速: $dockerMirror"
 docker buildx build \

+ 154 - 0
cognio/国内构建详解.md

@@ -0,0 +1,154 @@
+# Cognio Docker 镜像构建脚本 - 国内构建详解
+
+本脚本用于在远程 Linux 服务器上构建并推送 Cognio 的多架构 Docker 镜像,针对国内网络环境做了全面优化。
+
+## 文件说明
+
+| 文件 | 说明 |
+|------|------|
+| `buildDockerImage_u24_docker.bat` | Windows 批处理入口,调用 PowerShell 脚本 |
+| `buildDockerImage_u24_docker.ps1` | 主脚本,包含所有构建逻辑 |
+
+## 使用方法
+
+### 基本用法
+
+双击 `buildDockerImage_u24_docker.bat` 或在命令行执行:
+
+```cmd
+buildDockerImage_u24_docker.bat
+```
+
+### 命令行参数
+
+```cmd
+buildDockerImage_u24_docker.bat [用户名] [主机地址] [SSH端口]
+```
+
+### 镜像标签输入
+
+运行后会提示输入镜像标签:
+
+- **留空**: 仅推送 `latest` 标签
+- **输入标签**: 如 `v1.0 beta`,将推送 `latest`、`v1.0`、`beta`
+- **-l 参数**: 排除 `latest`,如 `-l v1.0` 仅推送 `v1.0`
+
+## 处理流程
+
+```
+┌─────────────────────────────────────────────────────────────┐
+│                      本地 Windows                           │
+├─────────────────────────────────────────────────────────────┤
+│  1. 读取配置(远程服务器、Git仓库、Docker镜像名)            │
+│  2. 提示用户输入镜像标签                                     │
+│  3. 随机选择 Docker 镜像加速源                               │
+│  4. 生成远程执行的 Shell 脚本                                │
+│  5. 将脚本转为 Base64 编码                                   │
+│  6. 通过 SSH 发送到远程服务器的 tmux 会话                    │
+└─────────────────────────────────────────────────────────────┘
+                              │
+                              ▼ SSH
+┌─────────────────────────────────────────────────────────────┐
+│                    远程 Linux 服务器                         │
+├─────────────────────────────────────────────────────────────┤
+│  7. 在 tmux 会话中解码 Base64 并写入 /tmp/build_cognio.sh   │
+│  8. 执行构建脚本:                                           │
+│     a. 克隆/更新 Git 仓库                                    │
+│     b. 修改 Dockerfile(详见下方"国内加速优化")             │
+│     c. 使用 docker buildx 构建多架构镜像                     │
+│     d. 推送到 Docker Hub                                     │
+└─────────────────────────────────────────────────────────────┘
+```
+
+## 配置项
+
+脚本顶部的配置区可修改:
+
+```powershell
+# 远程服务器配置
+$remoteUser = "root"
+$remoteHost = "192.168.1.99"
+$remotePort = "22"
+
+# Git 仓库配置
+$repoUrl = "http://ds:39418/AI/Cognio"
+$repoDir = "Cognio"
+
+# Docker 镜像配置
+$imageName = "amwpfiqvy/cognio"
+
+# tmux 会话名
+$tmuxSession = "dbx"
+```
+
+## 国内加速优化
+
+脚本会自动修改 Dockerfile,应用以下三项国内加速:
+
+### 1. Docker 基础镜像加速
+
+随机使用以下加速源之一拉取基础镜像:
+
+| 加速源 | 地址 |
+|--------|------|
+| 1Panel | `docker.1panel.live` |
+| Rat.dev | `hub.rat.dev` |
+| DaoCloud | `docker.m.daocloud.io` |
+
+**实现方式**:在 Dockerfile 开头插入 `ARG DOCKER_MIRROR`,并修改 `FROM` 指令使用镜像源。
+
+### 2. APT 源加速(阿里云)
+
+将 Debian/Ubuntu 的 apt 源替换为阿里云镜像:
+
+```
+http://deb.debian.org → https://mirrors.aliyun.com
+```
+
+**实现方式**:在 `FROM` 行后插入 `RUN sed` 命令,兼容新版 `debian.sources` 和旧版 `sources.list`。
+
+### 3. PyPI 源加速(阿里云)
+
+将所有 `pip install` 命令替换为使用阿里云 PyPI 镜像:
+
+```bash
+# 原始命令
+pip install package
+
+# 替换后
+pip install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com package
+```
+
+**实现方式**:使用 `sed` 全局替换 Dockerfile 中的 `pip install`。
+
+## Dockerfile 修改示例
+
+原始 Dockerfile:
+```dockerfile
+FROM python:3.11-slim
+RUN apt-get update && apt-get install -y gcc
+RUN pip install poetry==1.7.1
+```
+
+修改后:
+```dockerfile
+ARG DOCKER_MIRROR=docker.io
+FROM ${DOCKER_MIRROR}/library/python:3.11-slim
+RUN sed -i "s|http://deb.debian.org|https://mirrors.aliyun.com|g" /etc/apt/sources.list.d/debian.sources 2>/dev/null || true
+RUN apt-get update && apt-get install -y gcc
+RUN pip install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com poetry==1.7.1
+```
+
+## 查看构建进度
+
+命令发送后,使用以下命令连接到远程 tmux 会话查看进度:
+
+```bash
+ssh -t -p 22 [email protected] "tmux attach -t dbx"
+```
+
+## 构建产物
+
+- **目标架构**: `linux/amd64`, `linux/arm64`
+- **推送目标**: Docker Hub (`amwpfiqvy/cognio`)
+- **缓存位置**: 远程服务器 `$HOME/.buildx-cache`