diff --git a/.github/workflows/docker-build-remote.yml b/.github/workflows/docker-build-remote.yml index 3d69466..a74ae2d 100644 --- a/.github/workflows/docker-build-remote.yml +++ b/.github/workflows/docker-build-remote.yml @@ -295,6 +295,7 @@ jobs: echo "🔨 開始 Multi-Arch Docker Build" echo "========================================" echo "映像名稱: ${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}" + echo "同時標記: ${{ env.DOCKER_IMAGE_REPO }}:latest" echo "目標架構: linux/amd64, linux/arm64" echo "" @@ -304,6 +305,7 @@ jobs: WORKDIR="${{ env.REMOTE_WORKDIR }}" PROJECT="${{ env.PROJECT_NAME }}" IMAGE="${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}" + IMAGE_LATEST="${{ env.DOCKER_IMAGE_REPO }}:latest" BUILDER_NAME="multiarch-builder-${{ github.run_id }}" echo "📂 進入專案目錄..." @@ -321,9 +323,11 @@ jobs: # Multi-arch build(只建構,不推送,載入到本地) # 使用 --progress=plain 顯示完整 log + # 同時標記版本號和 latest if ! docker buildx build \ --platform linux/amd64,linux/arm64 \ -t "${IMAGE}" \ + -t "${IMAGE_LATEST}" \ --progress=plain \ . 2>&1; then @@ -387,6 +391,7 @@ jobs: WORKDIR="${{ env.REMOTE_WORKDIR }}" PROJECT="${{ env.PROJECT_NAME }}" IMAGE="${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}" + IMAGE_LATEST="${{ env.DOCKER_IMAGE_REPO }}:latest" BUILDER_NAME="multiarch-builder-${{ github.run_id }}" echo "📂 進入專案目錄..." @@ -395,15 +400,18 @@ jobs: echo "" echo "📤 執行 Docker Push..." echo "映像標籤: ${IMAGE}" + echo "同時標記: ${IMAGE_LATEST}" echo "" # 確保使用正確的 builder docker buildx use "${BUILDER_NAME}" # 使用 buildx build --push 來推送 multi-arch 映像 + # 同時推送版本號和 latest if ! docker buildx build \ --platform linux/amd64,linux/arm64 \ -t "${IMAGE}" \ + -t "${IMAGE_LATEST}" \ --push \ --progress=plain \ . 2>&1; then @@ -426,6 +434,7 @@ jobs: echo "" echo "📦 映像已推送至 Docker Hub:" echo " ${IMAGE}" + echo " ${IMAGE_LATEST}" echo "" echo "🏗️ 支援的架構:" echo " - linux/amd64" @@ -533,7 +542,8 @@ jobs: 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 "" echo "🏗️ 支援的架構:" @@ -547,6 +557,7 @@ jobs: echo "" echo "📝 使用方式:" echo " docker pull ${{ env.DOCKER_IMAGE_REPO }}:${{ github.event.inputs.image_tag }}" + echo " docker pull ${{ env.DOCKER_IMAGE_REPO }}:latest" echo "" echo "========================================" echo "🎉 所有步驟已成功完成!" diff --git a/Dockerfile b/Dockerfile index aa73831..8126f43 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,6 +1,6 @@ # ============================================================================== # ConvertX-CN 官方 Docker Image -# 版本:v0.1.9 +# 版本:v0.1.10 # ============================================================================== # # 📦 Image 說明: @@ -15,13 +15,24 @@ # # 📊 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.description="ConvertX-CN - 精簡版檔案轉換服務" 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 RUN apt-get update && apt-get install -y --no-install-recommends \ 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:基礎系統工具 RUN apt-get update --fix-missing && apt-get install -y --no-install-recommends \ locales \ @@ -112,8 +131,9 @@ RUN apt-get update --fix-missing && apt-get install -y --no-install-recommends \ && rm -rf /var/lib/apt/lists/* # 階段 4:圖像處理工具 +# 注意:bookworm 使用 imagemagick(版本 6),trixie 才有 imagemagick-7 RUN apt-get update --fix-missing && apt-get install -y --no-install-recommends \ - imagemagick-7.q16 \ + imagemagick \ inkscape \ libheif-examples \ libjxl-tools \