Docker 镜像瘦身:多阶段构建把体积实实在在降下来(实战清单)
发表于 : 周日 10月 04, 2026 2:02 am
镜像体积直接影响拉取时间和分发成本,瘦身最有效的办法是多阶段构建。
多阶段构建示例
构建阶段的编译工具链不会进入最终镜像,这是体积下降的主要来源。
几个容易忽略的点
1. 用 slim 或 alpine 基础镜像,但先验证 glibc 兼容性,某些依赖在 alpine 上跑不起来。
2. 先复制 package.json 再装依赖,利用层缓存,代码改动不会导致重新装依赖。
3. 用 排除 node_modules、.git、测试数据,避免污染构建上下文。
4. 构建完用 看每层大小,找出异常的大层。
先量再砍
不要凭感觉删文件。先看 docker images 的体积,再逐层定位,改动一次量一次,才知道哪一步真正有效。
多阶段构建示例
代码: 全选
FROM node:22 AS build
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:22-slim
WORKDIR /app
COPY --from=build /app/dist ./dist
COPY --from=build /app/node_modules ./node_modules
CMD node dist/main.js
构建阶段的编译工具链不会进入最终镜像,这是体积下降的主要来源。
几个容易忽略的点
1. 用 slim 或 alpine 基础镜像,但先验证 glibc 兼容性,某些依赖在 alpine 上跑不起来。
2. 先复制 package.json 再装依赖,利用层缓存,代码改动不会导致重新装依赖。
3. 用
代码: 全选
.dockerignore4. 构建完用
代码: 全选
docker history 镜像名先量再砍
不要凭感觉删文件。先看 docker images 的体积,再逐层定位,改动一次量一次,才知道哪一步真正有效。