From f0b3b7bdcc92be3428a3723c1708b34f602e76ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B6=B5=E6=9B=A6?= Date: Fri, 16 Jan 2026 00:43:18 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=BC=96=E8=AF=91=E5=87=BA=20arm/v7=20?= =?UTF-8?q?=E6=9E=B6=E6=9E=84=E7=9A=84=E9=95=9C=E5=83=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile | 28 +++++++++++++++++----------- 1 file changed, 17 insertions(+), 11 deletions(-) diff --git a/Dockerfile b/Dockerfile index ac2023c..ac0c1a0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,14 +1,24 @@ # 定义构建参数,用于指定架构和基础镜像 -ARG TARGETPLATFORM ARG PYTHON_VERSION=3.14 # 根据不同架构选择对应的基础镜像 -FROM python:${PYTHON_VERSION}-alpine AS builder-amd64 -FROM python:${PYTHON_VERSION}-alpine AS builder-arm64 -FROM python:${PYTHON_VERSION}-bookworm AS builder-armv7 +FROM python:${PYTHON_VERSION}-alpine AS base-linux-amd64 +FROM python:${PYTHON_VERSION}-alpine AS base-linux-arm64 +FROM python:${PYTHON_VERSION}-bookworm AS base-linux-arm-v7 + +FROM python:${PYTHON_VERSION}-alpine AS run-linux-amd64 +FROM python:${PYTHON_VERSION}-alpine AS run-linux-arm64 +FROM python:${PYTHON_VERSION}-bookworm AS run-linux-arm-v7 + +FROM --platform=$BUILDPLATFORM alpine AS shelf +# 这里的逻辑是关键:接收标准的 TARGETPLATFORM (如 linux/amd64) +# 并将其转换为我们定义的别名格式 (如 linux-amd64) +ARG TARGETPLATFORM +RUN echo ${TARGETPLATFORM//\//-} > /platform_id # 根据TARGETPLATFORM自动选择对应的builder阶段 -FROM builder-${TARGETPLATFORM//\//-} AS builder +ARG TARGETPLATFORM +FROM base-${TARGETPLATFORM/linux\//linux-} AS builder # 安装构建依赖(根据基础镜像类型区分) RUN if [ -f /etc/alpine-release ]; then \ @@ -58,13 +68,9 @@ COPY holiday/ ./holiday/ COPY xiaomusic.py . # -------------------------- 运行阶段 -------------------------- -# 根据不同架构选择运行时基础镜像 -FROM python:${PYTHON_VERSION}-alpine AS runner-amd64 -FROM python:${PYTHON_VERSION}-alpine AS runner-arm64 -FROM python:${PYTHON_VERSION}-bookworm AS runner-armv7 - # 根据TARGETPLATFORM自动选择对应的runner阶段 -FROM runner-${TARGETPLATFORM//\//-} AS runner +ARG TARGETPLATFORM +FROM run-${TARGETPLATFORM/linux\//linux-} AS runner # 安装运行时依赖(区分Alpine和Debian) RUN if [ -f /etc/alpine-release ]; then \