Просмотр исходного кода

空间不足,只能分开构建了,国内成功不了

黄中银 3 месяцев назад
Родитель
Сommit
805ad6446e

+ 4 - 13
cognio/buildDockerImage_apq2.ps1

@@ -31,26 +31,17 @@ Write-Host "  Cognio 远程构建 Docker 镜像" -ForegroundColor Cyan
 Write-Host "========================================" -ForegroundColor Cyan
 Write-Host ""
 
-# Docker 镜像标签:提示用户输入(默认包含 latest,-l 排除 latest)
-$imageTagInput = Read-Host "请输入额外的 Docker 镜像标签 (多个用空格分隔,-l=排除latest,留空则仅推送 latest)"
+# Docker 镜像标签:提示用户输入
+$imageTagInput = Read-Host "请输入额外的 Docker 镜像标签 (多个用空格分隔,留空则仅推送 arm64)"
 
 $inputTags = @()
-$excludeLatest = $false
 
 if ($imageTagInput -ne "") {
     $inputTags = $imageTagInput -split '\s+' | Where-Object { $_ -ne "" }
-    if ($inputTags -contains "-l") {
-        $excludeLatest = $true
-        $inputTags = $inputTags | Where-Object { $_ -ne "-l" }
-    }
 }
 
 # 构建最终标签列表
-if ($excludeLatest) {
-    $imageTags = $inputTags
-} else {
-    $imageTags = @("latest") + $inputTags | Select-Object -Unique
-}
+$imageTags = @("arm64") + $inputTags | Select-Object -Unique
 
 # 构建 -t 参数列表
 $tagParams = ($imageTags | ForEach-Object { "-t ${imageName}:$_" }) -join " "
@@ -88,7 +79,7 @@ echo "配置 pip 只使用预编译包(避免 triton 编译问题)..."
 sed -i '/^FROM/a ENV PIP_ONLY_BINARY=:all:' Dockerfile
 echo "正在构建并推送 Docker 镜像..."
 docker buildx build \
-    --platform linux/amd64,linux/arm64 \
+    --platform linux/arm64 \
     $tagParams \
     --cache-from type=local,src=`$HOME/.buildx-cache \
     --cache-to type=local,dest=`$HOME/.buildx-cache,mode=max \

+ 2 - 0
cognio/buildDockerImage_apq3.bat

@@ -0,0 +1,2 @@
+@echo off
+powershell -ExecutionPolicy Bypass -File "%~dp0buildDockerImage_apq3.ps1" %*

+ 125 - 0
cognio/buildDockerImage_apq3.ps1

@@ -0,0 +1,125 @@
+# Cognio 远程构建 Docker 镜像脚本(海外服务器版本,无国内加速)
+
+[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
+
+# ============================================================
+# 配置区
+# ============================================================
+
+# 远程服务器配置
+$remoteUser = "root"
+$remoteHost = "vps-apq3.zalhb.com"
+$remotePort = "22"
+
+# Git 仓库配置
+$repoUrl = "https://github.com/0xReLogic/Cognio.git"
+$repoDir = "Cognio"
+
+# Docker 镜像配置
+$imageName = "amwpfiqvy/cognio"
+
+# tmux 会话名
+$tmuxSession = "dbx"
+
+# ============================================================
+# 主程序
+# ============================================================
+
+Write-Host ""
+Write-Host "========================================" -ForegroundColor Cyan
+Write-Host "  Cognio 远程构建 Docker 镜像" -ForegroundColor Cyan
+Write-Host "========================================" -ForegroundColor Cyan
+Write-Host ""
+
+# Docker 镜像标签:提示用户输入
+$imageTagInput = Read-Host "请输入额外的 Docker 镜像标签 (多个用空格分隔,留空则仅推送 amd64)"
+
+$inputTags = @()
+
+if ($imageTagInput -ne "") {
+    $inputTags = $imageTagInput -split '\s+' | Where-Object { $_ -ne "" }
+}
+
+# 构建最终标签列表
+$imageTags = @("amd64") + $inputTags | Select-Object -Unique
+
+# 构建 -t 参数列表
+$tagParams = ($imageTags | ForEach-Object { "-t ${imageName}:$_" }) -join " "
+
+Write-Host "镜像标签: $($imageTags -join ', ')" -ForegroundColor Yellow
+Write-Host ""
+
+# 支持命令行参数覆盖默认配置
+if ($args.Count -ge 1) { $remoteUser = $args[0] }
+if ($args.Count -ge 2) { $remoteHost = $args[1] }
+if ($args.Count -ge 3) { $remotePort = $args[2] }
+
+Write-Host "连接到: $remoteUser@$remoteHost`:$remotePort" -ForegroundColor Yellow
+Write-Host ""
+
+# ============================================================
+# 构建远程执行的 Shell 脚本
+# ============================================================
+
+# 生成远程脚本内容(写入临时文件执行,避免引号嵌套问题)
+$scriptContent = @"
+#!/bin/bash
+cd ~
+if [ -d "$repoDir" ]; then
+    echo "目录已存在,还原本地修改并拉取最新代码..."
+    cd $repoDir
+    git checkout .
+    git pull
+else
+    echo "目录不存在,正在克隆仓库..."
+    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 \
+    $tagParams \
+    --cache-from type=local,src=`$HOME/.buildx-cache \
+    --cache-to type=local,dest=`$HOME/.buildx-cache,mode=max \
+    --push \
+    .
+"@
+
+# 将脚本内容转为 base64,避免特殊字符问题
+$scriptBase64 = [Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes($scriptContent))
+
+# tmux 命令:解码并执行脚本
+$remoteCmd = "tmux has-session -t $tmuxSession 2>/dev/null || tmux new-session -d -s $tmuxSession; " +
+             "tmux send-keys -t $tmuxSession 'echo $scriptBase64 | base64 -d > /tmp/build_cognio.sh && bash /tmp/build_cognio.sh' Enter"
+
+# ============================================================
+# 执行远程命令
+# ============================================================
+
+Write-Host "正在发送命令到 tmux 会话: $tmuxSession" -ForegroundColor Yellow
+Write-Host ""
+
+& ssh -p $remotePort "$remoteUser@$remoteHost" $remoteCmd
+
+if ($LASTEXITCODE -eq 0) {
+    Write-Host ""
+    Write-Host "========================================" -ForegroundColor Green
+    Write-Host "  命令已发送到 tmux 会话: $tmuxSession" -ForegroundColor Green
+    Write-Host "========================================" -ForegroundColor Green
+    Write-Host ""
+    Write-Host "推送目标:" -ForegroundColor Yellow
+    foreach ($tag in $imageTags) {
+        Write-Host "  - ${imageName}:${tag}" -ForegroundColor Cyan
+    }
+    Write-Host ""
+    Write-Host "查看构建进度:" -ForegroundColor Yellow
+    Write-Host "  ssh -t -p $remotePort $remoteUser@$remoteHost `"tmux attach -t $tmuxSession`"" -ForegroundColor Cyan
+} else {
+    Write-Host ""
+    Write-Host "部署失败,请检查错误信息" -ForegroundColor Red
+}
+
+Write-Host ""
+pause

+ 1 - 1
cognio/buildDockerImage_u24_docker.ps1

@@ -107,7 +107,7 @@ sed -i '/^FROM/a ENV PIP_ONLY_BINARY=:all:' Dockerfile
 echo "正在构建并推送 Docker 镜像..."
 echo "使用镜像加速: $dockerMirror"
 docker buildx build \
-    --platform linux/amd64,linux/arm64 \
+    --platform linux/amd64 \
     --build-arg DOCKER_MIRROR=$dockerMirror \
     $tagParams \
     --cache-from type=local,src=`$HOME/.buildx-cache \

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

@@ -191,6 +191,6 @@ ssh -t -p 22 [email protected] "tmux attach -t dbx"
 
 ## 构建产物
 
-- **目标架构**: `linux/amd64`, `linux/arm64`
+- **目标架构**: `linux/amd64`
 - **推送目标**: Docker Hub (`amwpfiqvy/cognio`)
 - **缓存位置**: 远程服务器 `$HOME/.buildx-cache`

+ 14 - 7
cognio/海外构建说明.md

@@ -6,17 +6,23 @@
 
 | 文件 | 说明 |
 |------|------|
-| `buildDockerImage_apq2.bat` | Windows 批处理入口,调用 PowerShell 脚本 |
-| `buildDockerImage_apq2.ps1` | 主脚本,包含所有构建逻辑 |
+| `buildDockerImage_apq2.bat` | Windows 批处理入口,构建 arm64 架构 |
+| `buildDockerImage_apq2.ps1` | apq2 主脚本,仅构建 arm64 |
+| `buildDockerImage_apq3.bat` | Windows 批处理入口,构建 amd64 架构 |
+| `buildDockerImage_apq3.ps1` | apq3 主脚本,仅构建 amd64 |
 
 ## 使用方法
 
 ### 基本用法
 
-双击 `buildDockerImage_apq2.bat` 或在命令行执行:
+双击对应的 bat 文件或在命令行执行:
 
 ```cmd
+# 构建 arm64 架构
 buildDockerImage_apq2.bat
+
+# 构建 amd64 架构
+buildDockerImage_apq3.bat
 ```
 
 ### 命令行参数
@@ -29,9 +35,9 @@ buildDockerImage_apq2.bat [用户名] [主机地址] [SSH端口]
 
 运行后会提示输入镜像标签:
 
-- **留空**: 仅推送 `latest` 标签
-- **输入标签**: 如 `v1.0 beta`,将推送 `latest`、`v1.0`、`beta`
-- **-l 参数**: 排除 `latest`,如 `-l v1.0` 仅推送 `v1.0`
+- **apq2 留空**: 仅推送 `arm64` 标签
+- **apq3 留空**: 仅推送 `amd64` 标签
+- **输入标签**: 如 `v1.0 beta`,将同时推送架构标签和额外标签
 
 ## 处理流程
 
@@ -90,7 +96,8 @@ ssh -t -p 22 [email protected] "tmux attach -t dbx"
 
 ## 构建产物
 
-- **目标架构**: `linux/amd64`, `linux/arm64`
+- **apq2 目标架构**: `linux/arm64`
+- **apq3 目标架构**: `linux/amd64`
 - **推送目标**: Docker Hub (`amwpfiqvy/cognio`)
 - **缓存位置**: 远程服务器 `$HOME/.buildx-cache`