用途:在编写或审查 Dockerfile、配置 docker-compose、容器化应用(示例以 Node.js 为主,模式适用于任意运行时)、优化镜像体积或构建时间时提供生产级实践。不适用于 Kubernetes 清单、CI/CD 流水线配置和云厂商容器仓库。
主要能力与关键模式:多阶段构建,将构建依赖与运行时镜像分离,最终镜像只保留运行所需内容;使用非 root 用户运行容器;固定基础镜像版本(如 node:20.19-alpine3.21,或按 digest 固定)以保证可复现构建;层缓存顺序为先复制依赖清单并安装,再复制源码;提供 .dockerignore 排除 node_modules、.git、.env 等;添加 HEALTHCHECK 供编排器区分崩溃与启动中;禁止在 Dockerfile 或构建参数中写入密钥,构建期用 BuildKit --mount=type=secret,运行期用环境变量或 secret 挂载。
使用方式:按决策树选择方案——Node.js 应用采用 builder 到 runtime 的多阶段结构,层顺序为 COPY package*.json、RUN npm ci、COPY . .,在 CMD 前添加非 root 用户与 HEALTHCHECK;镜像过大时改用 alpine 变体、仅复制 dist 与生产依赖、运行 npm ci --omit=dev;构建慢时检查层缓存顺序;本地开发用 volumes 热重载并配合 depends_on 的 service_healthy 条件。
限制与边界情况:Alpine 使用 musl libc,sharp、canvas 等含原生绑定的 npm 包可能需改用 node:20-slim;Python 应用建议 python:3.12-slim 并在多阶段中使用虚拟环境;多平台构建用 docker buildx build --platform linux/amd64,linux/arm64;大型 monorepo 应只复制被构建的工作区包并强化 .dockerignore;加固部署可加 --read-only 并仅在需要处挂载可写 tmpfs。具体收费、平台支持等信息暂未提供。