<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Build Smaller Image :: Ay Docs</title>
    <link>https://ops.docs.72602.space/using/container/build_smaller_image/index.html</link>
    <description>减小 Dockerfile 生成镜像体积的方法 1. 选择更小的基础镜像 # ❌ 避免使用完整版本 FROM ubuntu:latest # ✅ 使用精简版本 FROM alpine:3.18 FROM python:3.11-slim FROM node:18-alpine 2. 使用多阶段构建 (Multi-stage Build) 这是最有效的方法之一:&#xA;# 构建阶段 FROM golang:1.21 AS builder WORKDIR /app COPY . . RUN go build -o myapp # 运行阶段 - 只复制必要文件 FROM alpine:3.18 WORKDIR /app COPY --from=builder /app/myapp . CMD [&#34;./myapp&#34;] 3. 合并 RUN 指令 每个 RUN 命令都会创建一个新层:&#xA;# ❌ 多层,体积大 RUN apt-get update RUN apt-get install -y package1 RUN apt-get install -y package2 # ✅ 单层,并清理缓存 RUN apt-get update &amp;&amp; \ apt-get install -y package1 package2 &amp;&amp; \ apt-get clean &amp;&amp; \ rm -rf /var/lib/apt/lists/* 4. 清理不必要的文件 RUN apt-get update &amp;&amp; \ apt-get install -y build-essential &amp;&amp; \ # 构建操作... &amp;&amp; \ apt-get purge -y build-essential &amp;&amp; \ apt-get autoremove -y &amp;&amp; \ rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 5. 使用 .dockerignore 文件 # .dockerignore node_modules .git *.md .env test/ 6. 只复制必要的文件 # ❌ 复制所有内容 COPY . . # ✅ 只复制需要的文件 COPY package.json package-lock.json ./ RUN npm ci --only=production COPY src/ ./src/ 7. 移除调试工具和文档 RUN apk add --no-cache python3 &amp;&amp; \ rm -rf /usr/share/doc /usr/share/man 8. 压缩和优化层 # 在单个 RUN 中完成所有操作 RUN set -ex &amp;&amp; \ apk add --no-cache --virtual .build-deps gcc musl-dev &amp;&amp; \ pip install --no-cache-dir -r requirements.txt &amp;&amp; \ apk del .build-deps 9. 使用专门的工具 dive: 分析镜像层 dive your-image:tag docker-slim: 自动精简镜像 docker-slim build your-image:tag 实际案例对比 优化前 (1.2GB): FROM ubuntu:20.04 RUN apt-get update RUN apt-get install -y python3 python3-pip COPY . /app WORKDIR /app RUN pip3 install -r requirements.txt CMD [&#34;python3&#34;, &#34;app.py&#34;] 优化后 (50MB): FROM python:3.11-alpine AS builder WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir --user -r requirements.txt FROM python:3.11-alpine WORKDIR /app COPY --from=builder /root/.local /root/.local COPY app.py . ENV PATH=/root/.local/bin:$PATH CMD [&#34;python&#34;, &#34;app.py&#34;] 关键要点总结 ✅ 使用 Alpine 或 slim 镜像&#xA;✅ 采用多阶段构建&#xA;✅ 合并命令并清理缓存&#xA;✅ 配置 .dockerignore&#xA;✅ 只安装生产环境依赖&#xA;✅ 删除构建工具和临时文件</description>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate></lastBuildDate>
    <atom:link href="https://ops.docs.72602.space/using/container/build_smaller_image/index.xml" rel="self" type="application/rss+xml" />
  </channel>
</rss>