Qianfan-OCR算法原理浅析:从CNN到现代OCR架构演进
2026/5/9 18:20:44
适用人群:已经使用 Docker,有镜像体积焦虑的开发者 / 运维工程师
阅读目标:掌握一套可复用的镜像瘦身方法论,而不是零散技巧
很多人第一次docker images时,都会被一个现象震惊:
REPOSITORY TAG SIZE my-app latest 1.2GB而冷静分析后会发现:
镜像体积问题,本质是 Dockerfile 工程质量问题。
在动手优化前,必须明确两点:
镜像不是越小越好,而是“在可维护前提下尽量小”
优化的目标不是炫技,而是:
FROM ubuntu:22.04然后在里面手动安装 Python、Node、JDK……
问题:
FROM python:3.11但这一步还远远不够。
FROM python:3.11-slim体积对比(大致):
| 镜像 | 体积 |
|---|---|
| python:3.11 | ~900MB |
| python:3.11-slim | ~120MB |
仅这一行,就可能减少 700MB。
因为:
FROM python:3.11 RUN apt update && apt install -y build-essential COPY . /app WORKDIR /app RUN pip install -r requirements.txt CMD ["python", "app.py"]问题:
# 构建阶段 FROM python:3.11-slim AS builder RUN apt update && apt install -y build-essential WORKDIR /build COPY requirements.txt . RUN pip install --prefix=/install -r requirements.txt # 运行阶段 FROM python:3.11-slim WORKDIR /app COPY --from=builder /install /usr/local COPY . . CMD ["python", "app.py"]效果:
RUN apt update RUN apt install -y curl RUN rm -rf /var/lib/apt/lists/*RUN apt update \ && apt install -y curl \ && rm -rf /var/lib/apt/lists/*原则:
一次 RUN,完成一个逻辑闭环。
COPY . .这会把以下内容全部打包:
.git __pycache__ .env venv node_modules logs效果:
RUN pip install --no-cache-dir -r requirements.txtRUN apt update \ && apt install -y xxx \ && rm -rf /var/lib/apt/lists/*推荐顺序:
COPY requirements.txt . RUN pip install -r requirements.txt COPY src/ src/好处:
| 阶段 | 镜像体积 |
|---|---|
| 初始版本 | 1.2GB |
| slim 镜像 | 300MB |
| 多阶段构建 | 150MB |
| .dockerignore + 清理 | ~100MB |
不是魔法,是工程细节。
可以总结为一句话:
只把“运行时真正需要的东西”放进最终镜像。
优化顺序建议:
Docker 镜像体积优化,并不是高深技巧,而是:
工程意识 + 正确方法论的自然结果。
当你能稳定地把镜像控制在合理体积范围内时,说明你已经具备了: