当一台服务器上跑的容器越来越多,手动 docker run 会变得难以维护:端口容易冲突、启动顺序靠人记、环境变量到处散。这时 Docker Compose 就是最合适的选择——一份 YAML 文件,把整套服务声明清楚。
为什么用 Compose
- 声明式:服务、网络、卷、环境变量全部写在文件里,可版本管理
- 一键启停:
docker compose up -d起全部,down停全部 - 自动组网:同一个 compose 项目内的服务可用服务名互相访问,不用记 IP
- 适合单机:绝大多数中小项目一台机器就够了,比 K8s 简单得多
典型结构示例
services:
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf:ro
depends_on:
- web
web:
build: ./web
environment:
- DB_HOST=mysql
depends_on:
- mysql
mysql:
image: mysql:8
environment:
- MYSQL_ROOT_PASSWORD=yourpass
volumes:
- dbdata:/var/lib/mysql
volumes:
dbdata:
几个实用技巧
- 用 depends_on 控制启动顺序,但注意它只保证启动,不保证「就绪」,业务侧仍要做重试
- 数据一定挂卷,否则容器重建数据就没了
- 环境变量抽到 .env,敏感信息不要硬编码进 yml
- 生产环境用 compose v2(命令是
docker compose,不是老的docker-compose)
小结
Compose 的定位很清晰:单机、多容器、开发与中小型生产环境。学会它,比自己写一堆 shell 脚本维护容器靠谱得多。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END












![囧次元[樱花动漫]去广告纯净版 - 浩宇工作室](https://umwx.oss-cn-shenzhen.aliyuncs.com/wp-content/uploads/2023/01/7ef194ec378b-1024x768.jpg)

![[电脑软件]抖音采集/下载工具TikTokDownloader 5.3 - 浩宇工作室](https://umwx.oss-cn-shenzhen.aliyuncs.com/wp-content/uploads/2024/05/20240510151922787-234818cqqjoo83p5s2us3e-1024x516.png)







暂无评论内容