第一章:容器化——Dockerfile 多阶段构建与 Docker Compose

第一章:容器化——Dockerfile 多阶段构建与 Docker Compose

“容器解决了’在我的机器上能跑’的经典问题。打包应用和所有依赖,在任何环境行为一致。”


1.1 为什么容器化是起点

传统问题

  • 开发机和生产机环境不一致
  • 上线后出现无法复现的 bug
  • 多服务协同困难

容器优势

  • 开发生产一致
  • 一条命令启动多服务
  • 项目间隔离

1.2 Dockerfile 多阶段构建

flowchart LR
    A[builder阶段] --> B[构建依赖]
    A --> C[编译工具]
    B --> D[生产镜像]
    C -.->|不进入| D

关键优化

  • 第一阶段的构建工具不进入最终镜像
  • 镜像体积减少 30-50%
  • 利用 Docker 层缓存

1.3 .dockerignore

__pycache__/
*.pyc
.venv/
.env
.git/
tests/
*.md
.pytest_cache/

1.4 Docker Compose 本地开发

flowchart
    A[api] --> B[FastAPI]
    A --> C[db]
    A --> D[redis]
    C --> E[PostgreSQL]
    D --> F[Redis]

核心服务

  • api:FastAPI 应用
  • db:PostgreSQL 16
  • redis:Redis 7
  • celery_worker:Celery 任务队列

本章小结

  1. 多阶段构建:减少镜像体积
  2. 非 root 用户:安全运行
  3. 健康检查:让 Docker 知道服务状态
  4. docker-compose:本地多服务协同

本章提示词模板

生成 Dockerfile

生成 FastAPI 生产级 Dockerfile:

- Python 3.12
- 非 root 用户运行
- 多阶段构建
- 健康检查 /health
- 镜像体积优化

继续阅读:第二章:CI/CD流水线