国内构建详解.md 5.4 KB

Cognio Docker 镜像构建脚本 - 国内构建详解

本脚本用于在远程 Linux 服务器上构建并推送 Cognio 的多架构 Docker 镜像,针对国内网络环境做了全面优化。

文件说明

文件 说明
buildDockerImage_u24_docker.bat Windows 批处理入口,调用 PowerShell 脚本
buildDockerImage_u24_docker.ps1 主脚本,包含所有构建逻辑

使用方法

基本用法

双击 buildDockerImage_u24_docker.bat 或在命令行执行:

buildDockerImage_u24_docker.bat

命令行参数

buildDockerImage_u24_docker.bat [用户名] [主机地址] [SSH端口]

镜像标签输入

运行后会提示输入镜像标签:

  • 留空: 仅推送 latest 标签
  • 输入标签: 如 v1.0 beta,将推送 latestv1.0beta
  • -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                                     │
└─────────────────────────────────────────────────────────────┘

配置项

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

# 远程服务器配置
$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 镜像:

# 原始命令
pip install package

# 替换后
pip install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com package

实现方式:使用 sed 全局替换 Dockerfile 中的 pip install

Dockerfile 修改示例

原始 Dockerfile:

FROM python:3.11-slim
RUN apt-get update && apt-get install -y gcc
RUN pip install poetry==1.7.1

修改后:

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 会话查看进度:

ssh -t -p 22 [email protected] "tmux attach -t dbx"

构建产物

  • 目标架构: linux/amd64, linux/arm64
  • 推送目标: Docker Hub (amwpfiqvy/cognio)
  • 缓存位置: 远程服务器 $HOME/.buildx-cache