Docker Compose 教程：一个文件管住所有容器

Docker Compose 教程：一个文件编排所有容器真实项目从来不是单容器：博客要配数据库，应用要配缓存，再加个反代。手动逐个 docker run 又长又容易错。Docker Compose 用一个 YAML 文件把整组服务定义下来，一条命令全部拉起。本教程依据 Docker 官方文档（docs.docker.com/compose）整理。一、安装确认新版 Docker Desktop 和 get.docker.com 脚本安装的 Docker Engine 都自带 Compose 插件，验证： docker compose version 能输出版本号即可，命令统一用 docker compose（带空格，旧版 docker-compose 已是遗留写法）。二、第一个 compose.yaml 以"WordPress + MySQL"经典组合为例，在项目目录建 compose.yaml（旧名 docker-compose.yml 同样有效）： services: db: image: mysql:8.4 restart: always environment: MYSQL_ROOT_PASSWORD: 改掉我 MYSQL_DATABASE: wordpress volumes: - db_data:/var/lib/mysql web: image: wordpress:latest restart: always ports: - "8080:80" environment: WORDPRESS_DB_HOST: db WORDPRESS_DB_PASSWORD: 改掉我 depends_on: - db volumes: db_data: 注意 WORDPRESS_DB_HOST 直接写了 db——同一 compose 文件里的服务自动在同一个网络里，用服务名就能互相访问，这是 Compose 最大的便利。三、核心命令 docker compose up -d # 后台创建并启动所有服务 docker compose ps # 查看本项目的容器 docker compose logs -f # 跟踪所有服务日志 docker compose logs -f web # 只看某个服务 docker compose restart # 重启 docker compose down # 停止并删除容器（默认保留数据卷） docker compose down -v # 连数据卷一起删（数据没了，慎用） docker compose pull # 拉取最新镜像升级应用的完整流程： docker compose pull && docker compose up -d Compose 会只重建镜像变化的容器，数据卷原样保留。四、自建镜像的项目应用代码不需要先打成镜像再推仓库，Compose 可以直接构建： services: app: build: . # 用当前目录的 Dockerfile 构建 ports: - "3000:3000" 改了代码后 docker compose up -d --build 重新构建并滚动更新。五、restart 策略 restart: always 让容器开机自启、崩溃自动拉起——配合 Docker 的 live-restore，服务器重启后你的整套服务自动恢复，无需写任何 systemd 或 crontab。个人自托管服务建议统一加上。六、总结需求命令启动全套服务 docker compose up -d 看日志 docker compose logs -f 停止清理 docker compose down 升级应用 pull && up -d 改代码重跑 up -d --build 开机自启每个服务加 restart: always 写好一个 compose.yaml，部署就从"一长串命令"变成"拷文件、up -d"。这也是自托管社区分享服务的通用格式——以后看到别人的 compose 文件，直接就能用起来。