fix: 更新 Dockerfile 版本至 v0.1.10,修正基礎映像為 debian:bookworm,並新增 APT 重試機制以改善 Multi-Arch Build 的穩定性

This commit is contained in:
Your Name 2026-01-21 20:43:54 +08:00
parent 448011f7e2
commit 4d2a690bb9
2 changed files with 35 additions and 4 deletions

View file

@ -295,6 +295,7 @@ jobs:
echo "🔨 開始 Multi-Arch Docker Build" echo "🔨 開始 Multi-Arch Docker Build"
echo "========================================" echo "========================================"
echo "映像名稱: ${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}" echo "映像名稱: ${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}"
echo "同時標記: ${{ env.DOCKER_IMAGE_REPO }}:latest"
echo "目標架構: linux/amd64, linux/arm64" echo "目標架構: linux/amd64, linux/arm64"
echo "" echo ""
@ -304,6 +305,7 @@ jobs:
WORKDIR="${{ env.REMOTE_WORKDIR }}" WORKDIR="${{ env.REMOTE_WORKDIR }}"
PROJECT="${{ env.PROJECT_NAME }}" PROJECT="${{ env.PROJECT_NAME }}"
IMAGE="${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}" IMAGE="${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}"
IMAGE_LATEST="${{ env.DOCKER_IMAGE_REPO }}:latest"
BUILDER_NAME="multiarch-builder-${{ github.run_id }}" BUILDER_NAME="multiarch-builder-${{ github.run_id }}"
echo "📂 進入專案目錄..." echo "📂 進入專案目錄..."
@ -321,9 +323,11 @@ jobs:
# Multi-arch build只建構不推送載入到本地 # Multi-arch build只建構不推送載入到本地
# 使用 --progress=plain 顯示完整 log # 使用 --progress=plain 顯示完整 log
# 同時標記版本號和 latest
if ! docker buildx build \ if ! docker buildx build \
--platform linux/amd64,linux/arm64 \ --platform linux/amd64,linux/arm64 \
-t "${IMAGE}" \ -t "${IMAGE}" \
-t "${IMAGE_LATEST}" \
--progress=plain \ --progress=plain \
. 2>&1; then . 2>&1; then
@ -387,6 +391,7 @@ jobs:
WORKDIR="${{ env.REMOTE_WORKDIR }}" WORKDIR="${{ env.REMOTE_WORKDIR }}"
PROJECT="${{ env.PROJECT_NAME }}" PROJECT="${{ env.PROJECT_NAME }}"
IMAGE="${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}" IMAGE="${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}"
IMAGE_LATEST="${{ env.DOCKER_IMAGE_REPO }}:latest"
BUILDER_NAME="multiarch-builder-${{ github.run_id }}" BUILDER_NAME="multiarch-builder-${{ github.run_id }}"
echo "📂 進入專案目錄..." echo "📂 進入專案目錄..."
@ -395,15 +400,18 @@ jobs:
echo "" echo ""
echo "📤 執行 Docker Push..." echo "📤 執行 Docker Push..."
echo "映像標籤: ${IMAGE}" echo "映像標籤: ${IMAGE}"
echo "同時標記: ${IMAGE_LATEST}"
echo "" echo ""
# 確保使用正確的 builder # 確保使用正確的 builder
docker buildx use "${BUILDER_NAME}" docker buildx use "${BUILDER_NAME}"
# 使用 buildx build --push 來推送 multi-arch 映像 # 使用 buildx build --push 來推送 multi-arch 映像
# 同時推送版本號和 latest
if ! docker buildx build \ if ! docker buildx build \
--platform linux/amd64,linux/arm64 \ --platform linux/amd64,linux/arm64 \
-t "${IMAGE}" \ -t "${IMAGE}" \
-t "${IMAGE_LATEST}" \
--push \ --push \
--progress=plain \ --progress=plain \
. 2>&1; then . 2>&1; then
@ -426,6 +434,7 @@ jobs:
echo "" echo ""
echo "📦 映像已推送至 Docker Hub" echo "📦 映像已推送至 Docker Hub"
echo " ${IMAGE}" echo " ${IMAGE}"
echo " ${IMAGE_LATEST}"
echo "" echo ""
echo "🏗️ 支援的架構:" echo "🏗️ 支援的架構:"
echo " - linux/amd64" echo " - linux/amd64"
@ -533,7 +542,8 @@ jobs:
echo "========================================" echo "========================================"
echo "" echo ""
echo "📦 映像資訊:" echo "📦 映像資訊:"
echo " - 映像名稱: ${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}" echo " - 版本標籤: ${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}"
echo " - Latest 標籤: ${{ env.DOCKER_IMAGE_REPO }}:latest"
echo " - Docker Hub: https://hub.docker.com/r/${{ env.DOCKER_IMAGE_REPO }}/tags" echo " - Docker Hub: https://hub.docker.com/r/${{ env.DOCKER_IMAGE_REPO }}/tags"
echo "" echo ""
echo "🏗️ 支援的架構:" echo "🏗️ 支援的架構:"
@ -547,6 +557,7 @@ jobs:
echo "" echo ""
echo "📝 使用方式:" echo "📝 使用方式:"
echo " docker pull ${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}" echo " docker pull ${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}"
echo " docker pull ${{ env.DOCKER_IMAGE_REPO }}:latest"
echo "" echo ""
echo "========================================" echo "========================================"
echo "🎉 所有步驟已成功完成!" echo "🎉 所有步驟已成功完成!"

View file

@ -1,6 +1,6 @@
# ============================================================================== # ==============================================================================
# ConvertX-CN 官方 Docker Image # ConvertX-CN 官方 Docker Image
# 版本v0.1.9 # 版本v0.1.10
# ============================================================================== # ==============================================================================
# #
# 📦 Image 說明: # 📦 Image 說明:
@ -15,13 +15,24 @@
# #
# 📊 Image 大小:約 5-7 GB # 📊 Image 大小:約 5-7 GB
# #
# ⚠️ Base Image使用 debian:bookworm穩定版
# - 確保 Multi-Arch (amd64/arm64) 構建穩定性
# - 避免 trixie (testing) 套件同步不穩定問題
#
# ============================================================================== # ==============================================================================
FROM debian:trixie-slim AS base FROM debian:bookworm-slim AS base
LABEL org.opencontainers.image.source="https://github.com/pi-docket/ConvertX-CN" LABEL org.opencontainers.image.source="https://github.com/pi-docket/ConvertX-CN"
LABEL org.opencontainers.image.description="ConvertX-CN - 精簡版檔案轉換服務" LABEL org.opencontainers.image.description="ConvertX-CN - 精簡版檔案轉換服務"
WORKDIR /app WORKDIR /app
# 配置 APT 重試機制(解決 Multi-Arch Build 時的網路不穩定問題)
RUN echo 'Acquire::Retries "5";' > /etc/apt/apt.conf.d/80-retries \
&& echo 'Acquire::http::Timeout "120";' >> /etc/apt/apt.conf.d/80-retries \
&& echo 'Acquire::https::Timeout "120";' >> /etc/apt/apt.conf.d/80-retries \
&& echo 'Acquire::ftp::Timeout "120";' >> /etc/apt/apt.conf.d/80-retries \
&& echo 'DPkg::Lock::Timeout "120";' >> /etc/apt/apt.conf.d/80-retries
# install bun # install bun
RUN apt-get update && apt-get install -y --no-install-recommends \ RUN apt-get update && apt-get install -y --no-install-recommends \
curl \ curl \
@ -83,6 +94,14 @@ FROM base AS release
# #
# ============================================================================== # ==============================================================================
# 配置 APT 重試機制(解決 Multi-Arch Build 時的網路不穩定問題)
RUN echo 'Acquire::Retries "5";' > /etc/apt/apt.conf.d/80-retries \
&& echo 'Acquire::http::Timeout "120";' >> /etc/apt/apt.conf.d/80-retries \
&& echo 'Acquire::https::Timeout "120";' >> /etc/apt/apt.conf.d/80-retries \
&& echo 'Acquire::ftp::Timeout "120";' >> /etc/apt/apt.conf.d/80-retries \
&& echo 'APT::Get::Assume-Yes "true";' >> /etc/apt/apt.conf.d/80-retries \
&& echo 'DPkg::Lock::Timeout "120";' >> /etc/apt/apt.conf.d/80-retries
# 階段 1基礎系統工具 # 階段 1基礎系統工具
RUN apt-get update --fix-missing && apt-get install -y --no-install-recommends \ RUN apt-get update --fix-missing && apt-get install -y --no-install-recommends \
locales \ locales \
@ -112,8 +131,9 @@ RUN apt-get update --fix-missing && apt-get install -y --no-install-recommends \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
# 階段 4圖像處理工具 # 階段 4圖像處理工具
# 注意bookworm 使用 imagemagick版本 6trixie 才有 imagemagick-7
RUN apt-get update --fix-missing && apt-get install -y --no-install-recommends \ RUN apt-get update --fix-missing && apt-get install -y --no-install-recommends \
imagemagick-7.q16 \ imagemagick \
inkscape \ inkscape \
libheif-examples \ libheif-examples \
libjxl-tools \ libjxl-tools \