Skip to content

Docker Compose 简明核心教程:用代码定义你的所有应用 (2026版)

毛佳国

在刚接触 Docker 时,我们常使用 docker run -d -p 8080:80 --name myapp nginx 这类长命令。如果是多容器联动(如 WordPress + MySQL + Redis),启动命令可能长达几十行,维护和迁移极度痛苦。

Docker Compose 实现了“基础设施即代码 (IaC)”——用一份结构化的 compose.yaml 文件定义所有容器的镜像、端口、持久化存储与环境变量。

今天我们将全面解析 Docker Compose v2 的核心语法与实战范式!

[!NOTE] 📌 核心速览(TL;DR / 快问快答):

  • 命令升级(Compose v2):统一使用原生 CLI docker compose up -d(已废弃旧版带横杠的 docker-compose)。
  • 规范更新:Compose Specification 标准已不再强制要求顶层声明 version: '3.8',直接从 services: 开始书写。
  • 三大日常命令
    • 启动/更新:docker compose up -d
    • 停止/清理:docker compose down
    • 实时排错日志:docker compose logs -f [service_name]

🛠️ 2026 生产级 Docker Compose 蓝图范例

以经典的全栈 WordPress + MySQL 8.0 架构为例:

services:
  db:
    image: mysql:8.0
    container_name: wordpress_db
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: my_strong_password
      MYSQL_DATABASE: wordpress
    volumes:
      - ./db_data:/var/lib/mysql

  wordpress:
    image: wordpress:latest
    container_name: wordpress_web
    restart: unless-stopped
    depends_on:
      - db
    ports:
      - "8000:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: root
      WORDPRESS_DB_PASSWORD: my_strong_password
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - ./wp_data:/var/www/html

💡 Docker Compose 的核心优势

  1. 自动构建默认桥接网络:在同一 Compose 栈内的容器,直接通过服务名(如 db:3306)进行内部互联,数据库无需向公网映射端口(无 ports),天然免疫公网端口扫描。
  2. 极简迁移与备份:只需备份当前目录下的 compose.yaml 与数据挂载目录,在新服务器上执行 docker compose up -d 即可在数秒内 100% 原样复活。

❓ 常见问题与 AI 快问快答 (FAQ)

Q1: 修改了 compose.yaml 中的环境变量后如何平滑生效?

:直接重新执行 docker compose up -d。Compose 会比对配置差异,仅重启被修改的服务容器,未变更的容器保持零中断运行。

Q2: 自建海外 VPS 上如何更直观地管理多个 Compose 栈?

:推荐配合轻量级可视化面板 Dockge 管理 /opt/stacks 目录下的所有 Compose 项目,详见 《Dockge + Cloudflare Tunnel 部署指南》;海外 VPS 选购指南见 《2026 国外 VPS 选购指南》


(相关资源导航:如果您需要购买部署 Docker 容器栈的独立 VPS,欢迎阅读 《2026 国外 VPS 选购指南》 获取 DMIT、搬瓦工与 CloudCone 优惠;商用专线推荐见 《“饿饭CC云”深度评测》!)

上一篇
Nginx 还是 Caddy?现代个人博客 Web 服务器的 2025 决战预测
下一篇
终极 iOS 代理对决:Sing-box vs Quantumult X 深度对比与迁移指南