来,直接给你一篇实战型 + 可落地的高手路线指南 🚀
不是概念堆砌,而是 拿走就能跑的 Docker Compose 实践
Docker Compose 高手实践之路
简单拓扑 · 数据库代理 · 基于 WordPress 的个人博客一键搞定
目标一句话:
用 Docker Compose 把「多服务编排」这件事,从能用 → 用对 → 用优雅
一、Compose 到底解决什么问题?
在真实项目里,你一定见过这些痛点👇
- 服务多:Web / DB / Cache / Proxy
- 启动顺序复杂
- 本地、测试、线上环境不一致
- 新人一跑项目就翻车
👉 Docker Compose 的核心价值:
用一份 YAML,描述一整个系统拓扑
二、第一关:最简单的服务拓扑(Web + DB)
🎯 场景
- 一个 Web 应用
- 一个数据库
- 能通信、能启动、能销毁
1️⃣ docker-compose.yml
version: "3.9"
services:
web:
image: nginx:alpine
ports:
- "8080:80"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: demo
2️⃣ 一键启动
docker compose up -d
3️⃣ 你已经学会的关键点
✅ 服务即节点
✅ 自动创建内部网络
✅ 服务名 = DNS 名称(db)
✅ depends_on ≠ 服务就绪(只是启动顺序)
三、第二关:数据库代理(真实生产级拓扑)
🎯 场景
- Web 不直连数据库
- 中间加一层 DB Proxy
- 为后续:读写分离 / 切库 做准备
🧱 拓扑结构
Web → DB Proxy → MySQL
1️⃣ Compose 定义(ProxySQL 示例)
version: "3.9"
services:
web:
image: wordpress:php8.2-apache
environment:
WORDPRESS_DB_HOST: proxy:6033
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: wp123
WORDPRESS_DB_NAME: wordpress
depends_on:
- proxy
proxy:
image: proxysql/proxysql
ports:
- "6033:6033"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
2️⃣ 这一层的高手认知
🔥 Web 永远不关心真实 DB 地址
🔥 拓扑可替换、可扩展
🔥 Compose ≠ 只能玩玩 Demo
四、第三关:WordPress 个人博客站点(一键上线)
现在,来个完整闭环实战。
🧩 目标系统
Browser
↓
Nginx
↓
WordPress
↓
MySQL
1️⃣ 完整 docker-compose.yml
version: "3.9"
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- wordpress
wordpress:
image: wordpress:php8.2-fpm
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wp
WORDPRESS_DB_PASSWORD: wp123
WORDPRESS_DB_NAME: wordpress
volumes:
- wp-data:/var/www/html
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_DATABASE: wordpress
MYSQL_USER: wp
MYSQL_PASSWORD: wp123
MYSQL_ROOT_PASSWORD: root
volumes:
- db-data:/var/lib/mysql
volumes:
wp-data:
db-data:
2️⃣ 一行命令启动博客
docker compose up -d
浏览器访问 👉 http://localhost
🎉 你的个人博客已上线
五、Compose 高手的 6 条黄金法则(重点)
1️⃣ 服务名就是域名
wordpress → http://wordpress
db → mysql://db:3306
2️⃣ 配置进环境变量,状态进 volume
❌ 写死配置
✅ environment + volumes
3️⃣ 不要把 Compose 当 Kubernetes
- Compose:开发 / 单机 / 轻量部署
- K8s:集群 / 调度 / 高可用
4️⃣ 一个 Compose = 一个系统
不要:
docker run ...
docker run ...
docker run ...
要:
docker compose up
5️⃣ 显式网络(进阶)
networks:
backend:
用于:
- 隔离
- 多拓扑复用
6️⃣ Compose 是文档
YAML 本身就是架构说明
六、高手路线图(建议收藏)
docker run
↓
docker compose(单机系统)
↓
多环境 compose(override)
↓
CI + Compose
↓
Kubernetes
七、一句话总结
Docker Compose 的尽头不是 Demo,而是“可维护的系统拓扑”
如果你愿意,我可以下一步直接帮你:
- 🔥 拆解一个 真实开源项目的 docker-compose
- 🔧 写 dev / test / prod 多环境 Compose
- 🧠 讲透 Compose vs Kubernetes 的分界线
- 📦 给你一套 个人博客 + CI 自动部署方案
你想继续往 生产级 / 架构级 / 博客实战 哪条路走?