现实中的应用往往不是单个容器而是多个服务协同工作Web 前端、后端 API、数据库、缓存、消息队列……手动逐个启动容器并配置网络非常繁琐。Docker Compose 通过一个声明式的 YAML 文件让你一键启动整个应用栈。本文将带你从零开始编写第一个 docker-compose.yml掌握常用命令并运行一个完整的 LAMP 示例。一、什么是 Docker ComposeDocker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。你只需在 YAML 文件中配置应用的服务、网络和卷然后一条命令就能启动所有服务。核心价值简化多容器管理无需记忆复杂的 docker run 参数。环境一致性开发、测试、生产使用相同的 Compose 配置。支持依赖启动顺序depends_on。快速复制和共享docker-compose.yml 可以提交到 Git。二、安装 Docker ComposeDocker Compose 已集成在 Docker DesktopWindows / Mac中无需单独安装。Linux 用户需单独安装# 下载最新版替换版本号sudocurl-Lhttps://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname-s)-$(uname-m)-o/usr/local/bin/docker-composesudochmodx /usr/local/bin/docker-compose# 验证docker-compose--version注意新版 Docker Compose 也可作为 Docker 插件使用docker compose无横线。下文使用 docker-compose 命令但推荐迁移到 docker compose。三、第一个 Compose 文件Web Redis创建一个新目录 compose-demo新建 docker-compose.ymlversion:3.8services:web:image:nginx:alpineports:-8080:80volumes:-./html:/usr/share/nginx/htmlrestart:alwaysredis:image:redis:alpinerestart:always解释versionCompose 文件格式版本3.x 用于 Swarm建议 3.8。services定义容器每个服务对应一个容器。web使用 Nginx 镜像映射宿主机 8080 端口挂载本地 ./html 目录。redis使用 Redis 镜像。启动# 创建 ./html/index.htmlechoh1Hello Compose/h1./html/index.html# 启动所有服务后台运行docker-composeup-d# 查看状态docker-composeps# 访问 http://localhost:8080停止并清理docker-composedown四、核心命令详解五、一个更完整的示例WordPress MySQLversion:3.8services:db:image:mysql:8.0container_name:wordpress_dbrestart:alwaysenvironment:MYSQL_ROOT_PASSWORD:somewordpressMYSQL_DATABASE:wordpressMYSQL_USER:wordpressMYSQL_PASSWORD:wordpressvolumes:-db_data:/var/lib/mysqlwordpress:image:wordpress:latestcontainer_name:wordpress_apprestart:alwaysports:-8000:80environment:WORDPRESS_DB_HOST:db:3306WORDPRESS_DB_USER:wordpressWORDPRESS_DB_PASSWORD:wordpressWORDPRESS_DB_NAME:wordpressdepends_on:-dbvolumes:-wordpress_data:/var/www/htmlvolumes:db_data:wordpress_data:关键点environment设置容器环境变量MySQL 密码、数据库名等。volumes使用命名卷持久化数据保证容器删除后数据不丢。depends_on声明启动顺序先 db 后 wordpress但不会等待 db 完全就绪需健康检查。启动后访问 http://localhost:8000 即可进入 WordPress 安装页面。六、服务间通信在 Compose 中服务之间可以通过服务名作为主机名进行通信。上面的例子中WordPress 通过 WORDPRESS_DB_HOSTdb:3306 连接到 MySQL 容器。这是因为 Compose 会自动创建一个默认网络目录名_default并将所有服务加入该网络并支持 DNS 解析。七、常用配置字段速查八、小结Docker Compose 是多容器应用的得力助手。通过一个 YAML 文件你可以完整描述应用的所有服务、网络和存储。掌握 docker-compose up/down 等基本命令你已经能够快速搭建开发环境。