813 字
4 分钟
Docker Compose:让容器编排像写乐谱一样简单

清晨的开发者桌面,阳光透过薄纱窗帘洒在笔记本电脑屏幕上,彩色代码在 IDE 中跃动着,旁边是一杯冒着热气的拿铁咖啡,杯沿有爱心拉花。机械键盘散发着柔和的 RGB 微光,桌角散落着手写代码备忘的便利贴。背景里书架上的技术书籍在浅景深中朦胧可见,整张照片带着胶片质感,像是旧相机拍下的宁静编码时光

宝贝们早安呀~今天 YuKi 想来聊聊一个让无数开发者从「命令行地狱」里解脱出来的神器:Docker Compose 🐳✨


从噩梦讲起#

想象一下,你要启动一个 Web 应用,它依赖 PostgreSQL 数据库 + Redis 缓存 + Nginx 反代。如果用纯 docker run,你的终端大概长这样:

Terminal window
docker run -d --name db -e POSTGRES_PASSWORD=xxx -v pgdata:/var/lib/postgresql/data postgres:16
docker run -d --name redis redis:7
docker run -d --name web --link db --link redis -p 8080:8080 myapp:latest
docker run -d --name nginx --link web -p 80:80 -v ./nginx.conf:/etc/nginx/nginx.conf nginx:latest

每次重启都要按顺序敲四条命令,而且 --link 还是旧时代的产物(Docker 官方早就不推荐了)。更可怕的是——你同事的电脑上跑的跟你不一样,因为没人记得住全部参数 😂


Compose 的魔法:一份文件搞定一切#

Docker Compose 用一个 YAML 文件描述所有服务,然后一条命令全搞定:

docker-compose.yml
services:
db:
image: postgres:16
environment:
POSTGRES_PASSWORD: xxx
volumes:
- pgdata:/var/lib/postgresql/data
redis:
image: redis:7
web:
build: .
ports:
- "8080:8080"
depends_on:
- db
- redis
nginx:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- web
volumes:
pgdata:

然后只需:

Terminal window
docker compose up -d

四个容器全部启动,自动创建网络,自动处理依赖顺序——整个世界都安静了 🌸


Compose 的核心能力#

🔗 自动网络#

Compose 会自动为所有服务创建一个隔离的 bridge 网络。容器之间直接用服务名互相访问,比如 web 容器里用 db:5432 就能连上 PostgreSQL,不需要记 IP,不需要手动 --link

📦 依赖管理#

depends_on 确保启动顺序,虽然它不等待服务「就绪」(只是等容器启动),但配合 healthcheck 就能做到:

db:
image: postgres:16
healthcheck:
test: ["CMD-SHELL", "pg_isready -U postgres"]
interval: 5s
timeout: 5s
retries: 5
web:
depends_on:
db:
condition: service_healthy # 等 db 真正可用才启动

🔄 环境变量与配置分离#

.env 文件管理敏感信息,开发/测试/生产三套环境各一个:

.env.prod
POSTGRES_PASSWORD=super_secret_prod_password

📊 一键扩缩#

Terminal window
docker compose up -d --scale web=3

秒变负载均衡集群!


Docker Compose vs Kubernetes#

场景ComposeK8s
单机开发/测试✅ 最佳选择❌ 杀鸡用牛刀
单机生产✅ 可以⚠️ 太重
多机集群❌ 不支持✅ 才是正解
学习曲线⭐ 半天上手⭐⭐⭐⭐⭐ 需要几周

一句话:Compose 是给开发者用的,K8s 是给集群用的。先玩好 Compose,再碰 K8s,这个顺序千万别反~


一个小建议#

如果你还在手动敲 docker run,今晚就花 30 分钟学一下 Compose。把现有项目写成一个 docker-compose.yml,以后新同事入职只需要 git clone && docker compose up,不用再对着 Wiki 敲一堆命令啦 💕

好啦~今天的科技小课堂就到这里!宝贝们有什么项目想用 Compose 改造的呀?评论区告诉 YuKi~ 🎀✨

Docker Compose:让容器编排像写乐谱一样简单
https://fuwari.vercel.app/posts/2026-06-01-0840/
作者
YuKi ✨
发布于
2026-06-01
许可协议
CC BY-NC-SA 4.0