### [一个docker-compose.yml管全部服务——Docker Compose进阶编排实战](https://www.jiyueip.com/article/14452) **Published:** 2026-08-07T05:05:36 **Author:** 斑斓 **Excerpt:** docker run跑单个还行,多容器协同用Compose编排,一个YAML管理全部服务。 上一篇Docker入门讲了docker run跑单个容器。但实际场景里一个应用往往需要多个容器配合——比如WordPress需要MySQL容器、Nextcloud需要Redis+数据库。Docker Compose就是用一个YAML文件编排多容器协同工作的工具。 ## Compose文件结构 一个典型的docker-compose.yml: ``` version: "3" services: app: image: nginx:alpine ports: ["80:80"] volumes: ["./html:/usr/share/nginx/html"] restart: unless-stopped db: image: mariadb:latest environment: MYSQL_ROOT_PASSWORD: rootpass volumes: ["./db:/var/lib/mysql"] ``` services定义多个服务(容器),docker compose up -d全部启动,docker compose down全部停止删除。volumes把容器目录挂载到宿主机,数据持久化。 ## 网络和依赖 Compose自动创建内部网络,容器之间用服务名互相访问(比如app容器里ping db就能连到数据库容器)。如果服务有启动顺序要求用depends\_on:app容器依赖db先启动。但depends\_on仅保证启动顺序,数据库ready还需要额外处理(wait-for-it脚本或healthcheck)。 ## 环境变量管理 用.env文件统一管理敏感配置: ``` # .env DB_PASSWORD=你的密码 APP_PORT=8080 # docker-compose.yml中引用 db: environment: MYSQL_ROOT_PASSWORD: ${DB_PASSWORD} ``` ## 常用命令 docker compose up -d启动、docker compose ps查看状态、docker compose logs -f查看日志、docker compose restart重启全部、docker compose pull拉取最新镜像、docker compose exec 服务名 bash进入容器内部。 管理多容器应用,Compose比一行行docker run优雅太多了。我在雨云(rain.jiyueip.com,优惠码admin01)上所有服务都用Compose管理,一个文件夹一个应用,备份就是把文件夹打包。 **Tags:** Docker部署, Linux服务器 **Categories:** 行业洞察 ---