黄中银 il y a 3 mois
Parent
commit
c1279bbf7f

+ 2 - 0
cognio/buildDockerImage_apq2.ps1

@@ -84,6 +84,8 @@ else
     git clone $repoUrl
     cd $repoDir
 fi
+echo "配置 pip 只使用预编译包(避免 triton 编译问题)..."
+sed -i '/^FROM/a ENV PIP_ONLY_BINARY=:all:' Dockerfile
 echo "正在构建并推送 Docker 镜像..."
 docker buildx build \
     --platform linux/amd64,linux/arm64 \

+ 4 - 0
cognio/buildDockerImage_u24_docker.ps1

@@ -102,6 +102,10 @@ echo "配置 pip 国内镜像源..."
 sed -i 's|pip install|pip install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.aliyun.com|g' Dockerfile
 echo "配置 Poetry 国内镜像源(环境变量)..."
 sed -i '/^FROM/a ENV PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ PIP_TRUSTED_HOST=mirrors.aliyun.com' Dockerfile
+echo "配置 Poetry 源(pyproject.toml)..."
+sed -i '/^\[tool\.poetry\]/a \\n[[tool.poetry.source]]\\nname = "aliyun"\\nurl = "https://mirrors.aliyun.com/pypi/simple/"\\npriority = "primary"' pyproject.toml
+echo "配置 pip 只使用预编译包(避免 triton 编译问题)..."
+sed -i '/^FROM/a ENV PIP_ONLY_BINARY=:all:' Dockerfile
 echo "正在构建并推送 Docker 镜像..."
 echo "使用镜像加速: $dockerMirror"
 docker buildx build \

+ 29 - 3
cognio/国内构建说明.md

@@ -83,7 +83,7 @@ $tmuxSession = "dbx"
 
 ## 国内加速优化
 
-脚本会自动修改 Dockerfile,应用以下四项国内加速
+脚本会自动修改 Dockerfile 和 pyproject.toml,应用以下六项优化
 
 ### 1. Docker 基础镜像加速
 
@@ -121,9 +121,9 @@ pip install -i https://mirrors.aliyun.com/pypi/simple/ --trusted-host mirrors.al
 
 **实现方式**:使用 `sed` 全局替换 Dockerfile 中的 `pip install`。
 
-### 4. Poetry 加速(阿里云)
+### 4. Poetry 环境变量加速(阿里云)
 
-通过环境变量配置 pip 源,让 Poetry 解析和下载依赖时使用阿里云源:
+通过环境变量配置 pip 源,让 Poetry 下载依赖时使用阿里云源:
 
 ```dockerfile
 # 在 Dockerfile 中插入
@@ -132,6 +132,31 @@ ENV PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ PIP_TRUSTED_HOST=mirro
 
 **实现方式**:在 `FROM` 行后插入 `ENV` 指令设置环境变量。
 
+### 5. Poetry 源配置(pyproject.toml)
+
+在 `pyproject.toml` 中注入阿里云源配置,让 Poetry 解析依赖时也使用国内源:
+
+```toml
+[[tool.poetry.source]]
+name = "aliyun"
+url = "https://mirrors.aliyun.com/pypi/simple/"
+priority = "primary"
+```
+
+**实现方式**:使用 `sed` 在 `[tool.poetry]` 段后插入源配置。
+
+### 6. 强制使用预编译包
+
+在 Dockerfile 中注入环境变量,强制 pip 只使用预编译的 wheel 包:
+
+```dockerfile
+ENV PIP_ONLY_BINARY=:all:
+```
+
+**作用**:避免在 QEMU 模拟环境下编译 triton 等包时失败或耗时极长。
+
+**实现方式**:在 `FROM` 行后插入 `ENV` 指令。
+
 ## Dockerfile 修改示例
 
 原始 Dockerfile:
@@ -149,6 +174,7 @@ RUN poetry install
 ARG DOCKER_MIRROR=docker.io
 FROM ${DOCKER_MIRROR}/library/python:3.11-slim
 ENV PIP_INDEX_URL=https://mirrors.aliyun.com/pypi/simple/ PIP_TRUSTED_HOST=mirrors.aliyun.com
+ENV PIP_ONLY_BINARY=:all:
 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

+ 17 - 2
cognio/海外构建说明.md

@@ -53,8 +53,9 @@ buildDockerImage_apq2.bat [用户名] [主机地址] [SSH端口]
 │  6. 在 tmux 会话中解码 Base64 并写入 /tmp/build_cognio.sh   │
 │  7. 执行构建脚本:                                           │
 │     a. 克隆/更新 Git 仓库                                    │
-│     b. 使用 docker buildx 构建多架构镜像                     │
-│     c. 推送到 Docker Hub                                     │
+│     b. 修改 Dockerfile(添加 PIP_ONLY_BINARY 环境变量)      │
+│     c. 使用 docker buildx 构建多架构镜像                     │
+│     d. 推送到 Docker Hub                                     │
 └─────────────────────────────────────────────────────────────┘
 ```
 
@@ -93,6 +94,20 @@ ssh -t -p 22 [email protected] "tmux attach -t dbx"
 - **推送目标**: Docker Hub (`amwpfiqvy/cognio`)
 - **缓存位置**: 远程服务器 `$HOME/.buildx-cache`
 
+## 构建优化
+
+### 强制使用预编译包
+
+脚本会自动在 Dockerfile 中注入以下环境变量:
+
+```dockerfile
+ENV PIP_ONLY_BINARY=:all:
+```
+
+**作用**:强制 pip 只使用预编译的 wheel 包,避免在 QEMU 模拟环境下编译 triton 等包时失败。
+
+**原因**:docker buildx 构建 arm64 镜像时使用 QEMU 模拟,某些包(如 triton)在模拟环境下编译会失败或耗时极长。
+
 ## 与国内版本的区别
 
 此版本适用于海外服务器,不包含以下国内加速优化: