|
|
@@ -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`
|