第一章:容器化——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 任务队列
本章小结
- 多阶段构建:减少镜像体积
- 非 root 用户:安全运行
- 健康检查:让 Docker 知道服务状态
- docker-compose:本地多服务协同
本章提示词模板
生成 Dockerfile
生成 FastAPI 生产级 Dockerfile:
- Python 3.12
- 非 root 用户运行
- 多阶段构建
- 健康检查 /health
- 镜像体积优化
继续阅读:第二章:CI/CD流水线