海外构建说明.md 5.3 KB

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 文件或在命令行执行:

# 构建 arm64 架构
buildDockerImage_apq2.bat

# 构建 amd64 架构
buildDockerImage_apq3.bat

# 创建多架构 latest 标签(需先完成上述两个构建)
buildDockerImage_latest.bat

命令行参数

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                                     │
└─────────────────────────────────────────────────────────────┘

配置项

脚本顶部的配置区可修改:

# 远程服务器配置(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 会话查看进度:

# apq2 服务器
ssh -t -p 22 [email protected] "tmux attach -t dbx"

# apq3 服务器
ssh -t -p 22 [email protected] "tmux attach -t dbx"

构建产物

  • apq2 目标架构: linux/arm64
  • apq3 目标架构: linux/amd64
  • latest: 多架构 manifest(包含 amd64 + arm64)
  • 推送目标: Docker Hub (amwpfiqvy/cognio)
  • 缓存位置: 远程服务器 $HOME/.buildx-cache

构建优化

强制使用预编译包

脚本会自动在 Dockerfile 中注入以下环境变量:

ENV PIP_ONLY_BINARY=:all:

作用:强制 pip 只使用预编译的 wheel 包,避免在 QEMU 模拟环境下编译 triton 等包时失败。

原因:docker buildx 构建 arm64 镜像时使用 QEMU 模拟,某些包(如 triton)在模拟环境下编译会失败或耗时极长。

与国内版本的区别

此版本适用于海外服务器,不包含以下国内加速优化:

  • Docker 镜像加速源
  • APT 源加速(阿里云)
  • PyPI 源加速(阿里云)
  • Poetry 源加速

如需在国内服务器构建,请使用 buildDockerImage_u24_docker.bat