用 Docker Compose 管理一组长期运行的服务

整理说明:本文属于“2025-2026 技术笔记整理”系列,于 2026 年 8 月集中整理并公开发布。

用 Docker Compose 管理 WordPress 服务栈

当站点同时依赖 WordPress、数据库和反向代理时,逐个启动容器容易遗漏网络、存储或参数。Docker Compose 把这些约束写进 compose.yaml,让部署和维护使用同一套声明。

先读懂编排文件

services 定义组件;同一 Compose 网络中的容器可用服务名通信,例如 WordPress 通过 database:3306 访问数据库。volumes 保存持久数据,secrets 以文件形式挂载敏感值,profiles 可放置仅在维护时启动的工具。

  • restart: unless-stopped 可在异常退出或主机重启后恢复服务,但不能替代监控。
  • depends_on 只表达依赖关系;需要等待数据库真正可用时,应配合健康检查和 service_healthy 条件。
  • 数据库可只加入内部网络,减少不必要的端口暴露。
services:
  wordpress:
    depends_on:
      database:
        condition: service_healthy
    volumes:
      - wordpress_data:/var/www/html

启动前检查,启动后观察

修改 YAML 后先运行配置渲染命令,它会合并环境变量和覆盖文件,并及早发现缩进、字段或变量问题。确认结果无误后再后台启动:

docker compose config
docker compose up -d
docker compose ps
docker compose logs -f --tail=100

ps 检查运行和健康状态,logs 用于追踪故障。在运行中的容器执行诊断可用 docker compose exec wordpress php -v;带 profile 的工具服务可用 docker compose --profile tools run --rm wpcli ... 临时启动。

更新、暂停与清理

更新时先运行 docker compose pull,再执行 docker compose up -d。Compose 会重建需要变化的容器,命名卷不会因此消失。操作前仍应备份,完成后检查日志和站点;镜像标签应按维护策略固定。

  • stop 停止服务但保留容器,start 可原样恢复。
  • restart 只重启现有容器,不会把新 YAML 配置应用进去。
  • down 删除容器和项目网络,默认保留命名卷。
  • down -v 会删除命名卷,可能清空站点与数据库,不能作为普通重启命令。

应把 config、备份、启动、健康检查和日志复核固化为操作顺序。Compose 让环境可重复,数据保护和上线验证仍需明确流程。