标签: Docker Compose

  • 用 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 让环境可重复,数据保护和上线验证仍需明确流程。