体积大头一般是构建工具链和缓存被留在了运行镜像里。
用多阶段构建:前一阶段装依赖、跑构建,后一阶段只 COPY –from=builder 拿产物,运行镜像换成 alpine 或 slim 这类小基础镜像。
再检查 COPY 有没有把 node_modules、.git、日志、测试数据一起塞进去,依赖清单文件单独一条 COPY 能吃到层缓存。
定位用 docker history 逐层看,或拿 dive 看哪层最厚。
FROM node:22 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/dist /usr/share/nginx/html
# .dockerignore 至少包含
# node_modules
# .git
# dist
# *.log
THE END






暂无评论内容