本脚本用于在远程 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,将推送 latest、v1.0、betalatest,如 -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,应用以下三项国内加速:
随机使用以下加速源之一拉取基础镜像:
| 加速源 | 地址 |
|---|---|
| 1Panel | docker.1panel.live |
| Rat.dev | hub.rat.dev |
| DaoCloud | docker.m.daocloud.io |
实现方式:在 Dockerfile 开头插入 ARG DOCKER_MIRROR,并修改 FROM 指令使用镜像源。
将 Debian/Ubuntu 的 apt 源替换为阿里云镜像:
http://deb.debian.org → https://mirrors.aliyun.com
实现方式:在 FROM 行后插入 RUN sed 命令,兼容新版 debian.sources 和旧版 sources.list。
将所有 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:
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/arm64amwpfiqvy/cognio)$HOME/.buildx-cache