# Cognio Docker 镜像构建脚本 - 海外服务器版本 本脚本用于在海外 Linux 服务器上构建并推送 Cognio 的多架构 Docker 镜像,无国内加速优化。 ## 文件说明 | 文件 | 说明 | |------|------| | `buildDockerImage_apq2.bat` | Windows 批处理入口,构建 arm64 架构 | | `buildDockerImage_apq2.ps1` | apq2 主脚本,仅构建 arm64 | | `buildDockerImage_apq3.bat` | Windows 批处理入口,构建 amd64 架构 | | `buildDockerImage_apq3.ps1` | apq3 主脚本,仅构建 amd64 | | `buildDockerImage_latest.bat` | Windows 批处理入口,创建多架构 latest 标签(可在任意服务器执行) | | `buildDockerImage_latest.ps1` | latest 主脚本,合并 amd64 和 arm64 为 latest | ## 使用方法 ### 基本用法 双击对应的 bat 文件或在命令行执行: ```cmd # 构建 arm64 架构 buildDockerImage_apq2.bat # 构建 amd64 架构 buildDockerImage_apq3.bat # 创建多架构 latest 标签(需先完成上述两个构建) buildDockerImage_latest.bat ``` ### 命令行参数 ```cmd buildDockerImage_apq2.bat [用户名] [主机地址] [SSH端口] ``` ### 镜像标签输入 运行后会提示输入镜像标签: - **apq2 留空**: 仅推送 `arm64` 标签 - **apq3 留空**: 仅推送 `amd64` 标签 - **输入标签**: 如 `v1.0 beta`,将同时推送架构标签和额外标签 ## 处理流程 ``` ┌─────────────────────────────────────────────────────────────┐ │ 本地 Windows │ ├─────────────────────────────────────────────────────────────┤ │ 1. 读取配置(远程服务器、Git仓库、Docker镜像名) │ │ 2. 提示用户输入镜像标签 │ │ 3. 生成远程执行的 Shell 脚本 │ │ 4. 将脚本转为 Base64 编码 │ │ 5. 通过 SSH 发送到远程服务器的 tmux 会话 │ └─────────────────────────────────────────────────────────────┘ │ ▼ SSH ┌─────────────────────────────────────────────────────────────┐ │ 远程 Linux 服务器 │ ├─────────────────────────────────────────────────────────────┤ │ 6. 在 tmux 会话中解码 Base64 并写入 /tmp/build_cognio.sh │ │ 7. 执行构建脚本: │ │ a. 克隆/更新 Git 仓库 │ │ b. 修改 Dockerfile(添加 PIP_ONLY_BINARY 环境变量) │ │ c. 使用 docker buildx 构建单架构镜像 │ │ d. 推送到 Docker Hub │ └─────────────────────────────────────────────────────────────┘ ``` ## 配置项 脚本顶部的配置区可修改: ```powershell # 远程服务器配置(apq2 示例) $remoteUser = "root" $remoteHost = "vps-apq2.zalhb.com" $remotePort = "22" # Git 仓库配置 $repoUrl = "https://github.com/0xReLogic/Cognio.git" $repoDir = "Cognio" # Docker 镜像配置 $imageName = "amwpfiqvy/cognio" # tmux 会话名 $tmuxSession = "dbx" ``` **各脚本默认服务器:** - apq2: `vps-apq2.zalhb.com`(构建 arm64) - apq3: `vps-apq3.zalhb.com`(构建 amd64) - latest: `192.168.1.99`(可在任意服务器执行) ## 查看构建进度 命令发送后,使用以下命令连接到远程 tmux 会话查看进度: ```bash # apq2 服务器 ssh -t -p 22 root@vps-apq2.zalhb.com "tmux attach -t dbx" # apq3 服务器 ssh -t -p 22 root@vps-apq3.zalhb.com "tmux attach -t dbx" ``` ## 构建产物 - **apq2 目标架构**: `linux/arm64` - **apq3 目标架构**: `linux/amd64` - **latest**: 多架构 manifest(包含 amd64 + arm64) - **推送目标**: Docker Hub (`amwpfiqvy/cognio`) - **缓存位置**: 远程服务器 `$HOME/.buildx-cache` ## 构建优化 ### 强制使用预编译包 脚本会自动在 Dockerfile 中注入以下环境变量: ```dockerfile ENV PIP_ONLY_BINARY=:all: ``` **作用**:强制 pip 只使用预编译的 wheel 包,避免在 QEMU 模拟环境下编译 triton 等包时失败。 **原因**:docker buildx 构建 arm64 镜像时使用 QEMU 模拟,某些包(如 triton)在模拟环境下编译会失败或耗时极长。 ## 与国内版本的区别 此版本适用于海外服务器,不包含以下国内加速优化: - Docker 镜像加速源 - APT 源加速(阿里云) - PyPI 源加速(阿里云) - Poetry 源加速 如需在国内服务器构建,请使用 `buildDockerImage_u24_docker.bat`。