fix: 修復 Dockerfile.lite ARM64 build 問題

- 將 Python 安裝分成多個 RUN 步驟
- 修正 apt-get purge 在 lists 清除後失敗的問題
- 添加動態版本號修改步驟到 docker-build-lite.yml
- Lite 版 UI 將顯示 X.Y.Z-lite 版本號
This commit is contained in:
Your Name 2026-01-24 16:01:40 +08:00
parent 73f2bfd890
commit d235ba7505
6 changed files with 171 additions and 98 deletions

View file

@ -65,6 +65,65 @@ jobs:
echo "TAG=${TAG}" >> $GITHUB_OUTPUT echo "TAG=${TAG}" >> $GITHUB_OUTPUT
echo "📦 版本: ${VERSION}" echo "📦 版本: ${VERSION}"
# ========================================
# 動態修改 Lite 版本號Build-time variant
# 只在 runner workspace 生效,不 commit 回 repo
# ========================================
- name: Update version for Lite build
run: |
echo "========================================"
echo "🔧 動態修改 Lite 版本號"
echo "========================================"
VERSION="${{ steps.version.outputs.VERSION }}"
# 確保版本號包含 -lite
if [[ "${VERSION}" != *"-lite"* ]]; then
LITE_VERSION="${VERSION}-lite"
else
LITE_VERSION="${VERSION}"
fi
echo "🔍 Detected base version: ${VERSION}"
echo "✏️ Lite build detected, updating version to: ${LITE_VERSION}"
echo ""
# 修改 package.json
if [ -f "package.json" ]; then
ORIGINAL_VERSION=$(jq -r '.version' package.json)
echo "📄 package.json 原版本: ${ORIGINAL_VERSION}"
jq --arg v "${LITE_VERSION}" '.version = $v' package.json > package.json.tmp && mv package.json.tmp package.json
echo "✅ package.json 已更新為: ${LITE_VERSION}"
fi
# 修改 src/version.ts如存在
if [ -f "src/version.ts" ]; then
echo "📄 修改 src/version.ts..."
sed -i "s/version.*=.*['\"].*['\"]/version = '${LITE_VERSION}'/" src/version.ts
echo "✅ src/version.ts 已更新"
fi
# 修改 src/version.js如存在
if [ -f "src/version.js" ]; then
echo "📄 修改 src/version.js..."
sed -i "s/version.*=.*['\"].*['\"]/version = '${LITE_VERSION}'/" src/version.js
echo "✅ src/version.js 已更新"
fi
# 修改 .env如存在且有 VERSION 變數)
if [ -f ".env" ] && grep -q "^VERSION=" .env; then
echo "📄 修改 .env..."
sed -i "s/^VERSION=.*/VERSION=${LITE_VERSION}/" .env
echo "✅ .env 已更新"
fi
echo ""
echo "========================================"
echo "✅ Version updated for UI build: ${LITE_VERSION}"
echo "========================================"
echo ""
echo "⚠️ 注意:此修改只影響本次 build不會 commit 回 repo"
# ======================================== # ========================================
# 清理磁碟空間 # 清理磁碟空間
# ======================================== # ========================================

View file

@ -14,7 +14,7 @@ on:
image_tag: image_tag:
description: "📦 版本號例如0.1.15、0.1.15-lite、0.1.15.test" description: "📦 版本號例如0.1.15、0.1.15-lite、0.1.15.test"
required: true required: true
default: "" default: "0.1.15.test"
type: string type: string
build_target: build_target:
description: "🎯 Build 目標版本auto = 自動從版本號偵測)" description: "🎯 Build 目標版本auto = 自動從版本號偵測)"

View file

@ -234,7 +234,7 @@ RUN echo "" && \
# ============================================================================== # ==============================================================================
# ============================================================================== # ==============================================================================
# 🔐 PDF Packager 預設簽章憑證 + Python(合併以減少 layer # 🔐 PDF Packager 預設簽章憑證 + Python
# ============================================================================== # ==============================================================================
ENV PATH="/root/.local/bin:${PATH}" ENV PATH="/root/.local/bin:${PATH}"
ENV PIP_NO_CACHE_DIR=1 ENV PIP_NO_CACHE_DIR=1
@ -244,9 +244,10 @@ ENV PDF_SIGN_REASON="ConvertX-CN Lite PDF Packager"
ENV PDF_SIGN_LOCATION="Taiwan" ENV PDF_SIGN_LOCATION="Taiwan"
ENV PDF_SIGN_CONTACT="convertx-cn@localhost" ENV PDF_SIGN_CONTACT="convertx-cn@localhost"
# 階段 7安裝 Python 和編譯依賴
RUN echo "" && \ RUN echo "" && \
echo "========================================" && \ echo "========================================" && \
echo "🔐 安裝 Python + 產生簽章憑證" && \ echo "🔐 階段 7/8安裝 Python + 編譯工具" && \
echo "========================================" && \ echo "========================================" && \
apt-get update --fix-missing && apt-get install -y --no-install-recommends \ apt-get update --fix-missing && apt-get install -y --no-install-recommends \
python3 \ python3 \
@ -255,6 +256,13 @@ RUN echo "" && \
gcc \ gcc \
libffi-dev \ libffi-dev \
&& rm -rf /var/lib/apt/lists/* && \ && rm -rf /var/lib/apt/lists/* && \
echo "✅ 階段 7/8 完成Python + 編譯工具已安裝"
# 階段 8安裝 endesive 並產生簽章憑證
RUN echo "" && \
echo "========================================" && \
echo "🔐 階段 8/8安裝 endesive + 產生憑證" && \
echo "========================================" && \
pip3 install --no-cache-dir --break-system-packages endesive && \ pip3 install --no-cache-dir --break-system-packages endesive && \
mkdir -p /app/certs && \ mkdir -p /app/certs && \
openssl req -x509 -newkey rsa:2048 \ openssl req -x509 -newkey rsa:2048 \
@ -267,8 +275,13 @@ RUN echo "" && \
-passout pass: && \ -passout pass: && \
rm -f /tmp/key.pem /tmp/cert.pem && \ rm -f /tmp/key.pem /tmp/cert.pem && \
chmod 644 /app/certs/default.p12 && \ chmod 644 /app/certs/default.p12 && \
echo "✅ 階段 8/8 完成endesive + 簽章憑證已安裝"
# 清理編譯工具以減小體積
RUN apt-get update && \
apt-get purge -y --auto-remove gcc python3-dev libffi-dev && \ apt-get purge -y --auto-remove gcc python3-dev libffi-dev && \
echo "✅ Python + PDF 簽章已安裝" rm -rf /var/lib/apt/lists/* && \
echo "✅ 編譯工具已清理"
# ============================================================================== # ==============================================================================
# 最終清理 + Locale 設定 + 自訂字型(合併以減少 layer # 最終清理 + Locale 設定 + 自訂字型(合併以減少 layer

View file

@ -153,13 +153,13 @@ docker compose up -d
ConvertX-CN 提供兩個版本,滿足不同需求: ConvertX-CN 提供兩個版本,滿足不同需求:
| 特性 | Full 版 | Lite 版 | | 特性 | Full 版 | Lite 版 |
|------|---------|---------| | --------------- | ---------- | ------------- |
| **Image 大小** | 約 8-12 GB | 約 1.5-2.5 GB | | **Image 大小** | 約 8-12 GB | 約 1.5-2.5 GB |
| **部署速度** | 較慢 | 快速 | | **部署速度** | 較慢 | 快速 |
| **適用對象** | 進階使用者 | 一般使用者 | | **適用對象** | 進階使用者 | 一般使用者 |
| **OCR/AI/翻譯** | ✅ | ❌ | | **OCR/AI/翻譯** | ✅ | ❌ |
| **基本轉檔** | ✅ | ✅ | | **基本轉檔** | ✅ | ✅ |
### Lite 版快速啟動 ### Lite 版快速啟動

View file

@ -6,37 +6,38 @@ ConvertX-CN Lite 是專為一般使用者設計的輕量版本,提供快速部
## 📦 什麼是 Lite 版? ## 📦 什麼是 Lite 版?
| 特性 | Full 版 | Lite 版 | | 特性 | Full 版 | Lite 版 |
|------|---------|---------| | -------------- | ---------------------------- | ------------------------ |
| **Image 大小** | 約 8-12 GB | 約 1.2-1.5 GB | | **Image 大小** | 約 8-12 GB | 約 1.2-1.5 GB |
| **部署時間** | 較長(需下載大型模型) | 快速 | | **部署時間** | 較長(需下載大型模型) | 快速 |
| **記憶體需求** | 較高AI 模型) | 較低 | | **記憶體需求** | 較高AI 模型) | 較低 |
| **適用場景** | 進階使用者、需要 AI/OCR/翻譯 | 一般使用者、基本轉檔需求 | | **適用場景** | 進階使用者、需要 AI/OCR/翻譯 | 一般使用者、基本轉檔需求 |
--- ---
## ✅ Lite 版包含的功能 ## ✅ Lite 版包含的功能
### 核心功能 ### 核心功能
- ✅ **多語言 UI**:完整 i18n 介面65 種語言) - ✅ **多語言 UI**:完整 i18n 介面65 種語言)
- ✅ **檔案上傳/轉檔/下載**:完整流程支援 - ✅ **檔案上傳/轉檔/下載**:完整流程支援
- ✅ **轉檔進度與錯誤提示** - ✅ **轉檔進度與錯誤提示**
### 轉換引擎 ### 轉換引擎
| 引擎 | 功能說明 | 支援格式 | | 引擎 | 功能說明 | 支援格式 |
|------|----------|----------| | ------------------ | ------------------ | -------------------------------------------- |
| **LibreOffice** | 文件轉檔 | DOC, DOCX, XLS, XLSX, PPT, PPTX, ODT, PDF... | | **LibreOffice** | 文件轉檔 | DOC, DOCX, XLS, XLSX, PPT, PPTX, ODT, PDF... |
| **GraphicsMagick** | 圖片轉檔 | PNG, JPG, GIF, WEBP, BMP, TIFF... | | **GraphicsMagick** | 圖片轉檔 | PNG, JPG, GIF, WEBP, BMP, TIFF... |
| **FFmpeg** | 影音轉檔(精簡版) | MP4, MP3, WAV, AVI, MKV, MOV... | | **FFmpeg** | 影音轉檔(精簡版) | MP4, MP3, WAV, AVI, MKV, MOV... |
| **Pandoc** | 文件格式轉換 | Markdown, HTML, DOCX, LaTeX, EPUB... | | **Pandoc** | 文件格式轉換 | Markdown, HTML, DOCX, LaTeX, EPUB... |
### PDF 功能 ### PDF 功能
| 功能 | 說明 | | 功能 | 說明 |
|------|------| | ---------------- | ----------------------------------------------- |
| **PDF/A 轉換** | 使用 Ghostscript 轉換為 PDF/A-1b、PDF/A-2b | | **PDF/A 轉換** | 使用 Ghostscript 轉換為 PDF/A-1b、PDF/A-2b |
| **PDF 防修改** | 使用 qpdf 設定權限保護 | | **PDF 防修改** | 使用 qpdf 設定權限保護 |
| **PDF 數位簽章** | 使用 PFX/PKCS#12 憑證簽章(單一簽章,不含 LTV | | **PDF 數位簽章** | 使用 PFX/PKCS#12 憑證簽章(單一簽章,不含 LTV |
--- ---
@ -45,19 +46,19 @@ ConvertX-CN Lite 是專為一般使用者設計的輕量版本,提供快速部
以下功能僅在 Full 版中提供: 以下功能僅在 Full 版中提供:
| 功能類別 | 功能說明 | | 功能類別 | 功能說明 |
|----------|----------| | ------------------- | ------------------------------ |
| **向量圖轉換** | InkscapeSVG, PDF, PNG, EPS | | **向量圖轉換** | InkscapeSVG, PDF, PNG, EPS |
| **高效能圖片** | VIPS大型圖片處理 | | **高效能圖片** | VIPS大型圖片處理 |
| **OCR** | Tesseract OCR 文字辨識 | | **OCR** | Tesseract OCR 文字辨識 |
| **PDF 翻譯** | PDFMathTranslate、BabelDOC | | **PDF 翻譯** | PDFMathTranslate、BabelDOC |
| **PDF 轉 Markdown** | MinerU 智能擷取 | | **PDF 轉 Markdown** | MinerU 智能擷取 |
| **AI 模型** | YOLO、VLM 等深度學習模型 | | **AI 模型** | YOLO、VLM 等深度學習模型 |
| **電子書** | CalibreePub、MOBI 轉換) | | **電子書** | CalibreePub、MOBI 轉換) |
| **CAD/3D** | assimp、OpenCascade | | **CAD/3D** | assimp、OpenCascade |
| **PDF/A 驗證** | veraPDF | | **PDF/A 驗證** | veraPDF |
| **長期驗證** | LTV、OCSP、CRL、TSA | | **長期驗證** | LTV、OCSP、CRL、TSA |
| **完整 TexLive** | 進階 LaTeX 排版 | | **完整 TexLive** | 進階 LaTeX 排版 |
--- ---
@ -101,12 +102,12 @@ docker compose up -d
## 🏷️ Image Tag 說明 ## 🏷️ Image Tag 說明
| Tag | 說明 | | Tag | 說明 |
|-----|------| | ---------------------------------- | ----------------- |
| `convertx/convertx-cn:latest` | Full 版最新穩定版 | | `convertx/convertx-cn:latest` | Full 版最新穩定版 |
| `convertx/convertx-cn:latest-lite` | Lite 版最新穩定版 | | `convertx/convertx-cn:latest-lite` | Lite 版最新穩定版 |
| `convertx/convertx-cn:0.1.15` | Full 版指定版本 | | `convertx/convertx-cn:0.1.15` | Full 版指定版本 |
| `convertx/convertx-cn:0.1.15-lite` | Lite 版指定版本 | | `convertx/convertx-cn:0.1.15-lite` | Lite 版指定版本 |
--- ---
@ -158,7 +159,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
```yaml ```yaml
services: services:
convertx: convertx:
image: convertx/convertx-cn:latest # Full 版 image: convertx/convertx-cn:latest # Full 版
``` ```
### ⚠️ 重要提醒 ### ⚠️ 重要提醒
@ -171,33 +172,33 @@ services:
## 📊 Lite vs Full 功能對照表 ## 📊 Lite vs Full 功能對照表
| 功能類別 | 功能 | Lite | Full | | 功能類別 | 功能 | Lite | Full |
|----------|------|:----:|:----:| | --------- | ---------------------------- | :--: | :--: |
| **UI** | 多語言介面65 語言) | ✅ | ✅ | | **UI** | 多語言介面65 語言) | ✅ | ✅ |
| **UI** | 深色/淺色主題 | ✅ | ✅ | | **UI** | 深色/淺色主題 | ✅ | ✅ |
| **轉檔** | 文件轉檔LibreOffice | ✅ | ✅ | | **轉檔** | 文件轉檔LibreOffice | ✅ | ✅ |
| **轉檔** | 圖片轉檔GraphicsMagick | ✅ | ✅ | | **轉檔** | 圖片轉檔GraphicsMagick | ✅ | ✅ |
| **轉檔** | 圖片轉檔ImageMagick | ❌ | ✅ | | **轉檔** | 圖片轉檔ImageMagick | ❌ | ✅ |
| **轉檔** | 影音轉檔FFmpeg | ✅ | ✅ | | **轉檔** | 影音轉檔FFmpeg | ✅ | ✅ |
| **轉檔** | 文件格式Pandoc | ✅ | ✅ | | **轉檔** | 文件格式Pandoc | ✅ | ✅ |
| **轉檔** | 向量圖Inkscape | ❌ | ✅ | | **轉檔** | 向量圖Inkscape | ❌ | ✅ |
| **轉檔** | 高效能圖片VIPS | ❌ | ✅ | | **轉檔** | 高效能圖片VIPS | ❌ | ✅ |
| **轉檔** | 電子書Calibre | ❌ | ✅ | | **轉檔** | 電子書Calibre | ❌ | ✅ |
| **轉檔** | CAD/3Dassimp | ❌ | ✅ | | **轉檔** | CAD/3Dassimp | ❌ | ✅ |
| **PDF** | PDF/A 轉換 | ✅ | ✅ | | **PDF** | PDF/A 轉換 | ✅ | ✅ |
| **PDF** | PDF 防修改 | ✅ | ✅ | | **PDF** | PDF 防修改 | ✅ | ✅ |
| **PDF** | PDF 數位簽章 | ✅ | ✅ | | **PDF** | PDF 數位簽章 | ✅ | ✅ |
| **PDF** | PDF/A 驗證veraPDF | ❌ | ✅ | | **PDF** | PDF/A 驗證veraPDF | ❌ | ✅ |
| **PDF** | 長期驗證LTV | ❌ | ✅ | | **PDF** | 長期驗證LTV | ❌ | ✅ |
| **OCR** | 文字辨識Tesseract | ❌ | ✅ | | **OCR** | 文字辨識Tesseract | ❌ | ✅ |
| **OCR** | ocrmypdf | ❌ | ✅ | | **OCR** | ocrmypdf | ❌ | ✅ |
| **AI** | PDF 翻譯PDFMathTranslate | ❌ | ✅ | | **AI** | PDF 翻譯PDFMathTranslate | ❌ | ✅ |
| **AI** | PDF 翻譯BabelDOC | ❌ | ✅ | | **AI** | PDF 翻譯BabelDOC | ❌ | ✅ |
| **AI** | PDF 轉 MarkdownMinerU | ❌ | ✅ | | **AI** | PDF 轉 MarkdownMinerU | ❌ | ✅ |
| **字型** | 基本 CJK 字型 | ✅ | ✅ | | **字型** | 基本 CJK 字型 | ✅ | ✅ |
| **字型** | 完整 Noto 字型集 | ❌ | ✅ | | **字型** | 完整 Noto 字型集 | ❌ | ✅ |
| **LaTeX** | 基本 LaTeX | ❌ | ✅ | | **LaTeX** | 基本 LaTeX | ❌ | ✅ |
| **LaTeX** | 完整 TexLive CJK | ❌ | ✅ | | **LaTeX** | 完整 TexLive CJK | ❌ | ✅ |
--- ---

View file

@ -10,12 +10,12 @@
### 官方預建版(推薦) ### 官方預建版(推薦)
| Tag | 說明 | | Tag | 說明 |
| ---------------------------------- | -------------------- | | ---------------------------------- | ----------------- |
| `convertx/convertx-cn:latest` | Full 版最新穩定版 | | `convertx/convertx-cn:latest` | Full 版最新穩定版 |
| `convertx/convertx-cn:latest-lite` | Lite 版最新穩定版 | | `convertx/convertx-cn:latest-lite` | Lite 版最新穩定版 |
| `convertx/convertx-cn:v0.1.x` | Full 版指定版本號 | | `convertx/convertx-cn:v0.1.x` | Full 版指定版本號 |
| `convertx/convertx-cn:v0.1.x-lite` | Lite 版指定版本號 | | `convertx/convertx-cn:v0.1.x-lite` | Lite 版指定版本號 |
### Full 版(預設) ### Full 版(預設)