用途:在编写 Python 相关 Dockerfile 时,提供构建优化后的 Python 容器镜像的知识,目标是把镜像体积从约 1GB 降到约 120MB。
主要能力:使用 slim 基础镜像而非 Alpine;采用多阶段构建与 uv、poetry 等包管理器;处理虚拟环境;处理需要编译的 C 扩展;配置非 root 用户。技能明确建议 Python 容器不要用 Alpine,因为其 musl libc 会导致 numpy、pandas、scipy 等许多 wheel 不可用、被迫从源码编译、构建变慢并可能产生原生扩展运行错误。
使用方式:推荐用 uv 的多阶段模板——构建阶段 FROM python:3.11-slim AS builder,pip install --no-cache-dir uv,复制 pyproject.toml 与 uv.lock,执行 uv sync --frozen --no-dev;运行阶段用 python:3.11-slim,按需 apt-get 安装运行期依赖并清理列表,创建非 root 用户,只复制 .venv 和应用文件,设置 PATH="/app/.venv/bin:$PATH"、PYTHONUNBUFFERED=1、PYTHONDONTWRITEBYTECODE=1。包管理器命令:uv 用 uv sync --frozen --no-dev;poetry 用 poetry install --only=main 并设 POETRY_VIRTUALENVS_IN_PROJECT=1;pip 用 pip install --no-cache-dir --prefix=/install -r requirements.txt。
适用场景:需要编写或优化 Python 专用 Dockerfile、缩减镜像体积、在容器中管理 pip/poetry/uv 依赖、处理 musl/glibc 问题。若做通用多阶段构建模式或语言无关的容器安全,应改用 container-development;Go、Node.js 有对应专用技能。
限制:资料未提供价格、授权与平台支持信息。文中给出的体积、构建时间、内存、CVE 数量等数据为资料原文所列,实施效果以实际项目为准。