在容器化技术风靡的今天,Docker Compose 堪称开发者的 “部署神器”。它之所以备受青睐,是因为有着显著的优势。对于开发者而言,Docker Compose 能极大提升开发效率,在本地开发环境中,通过一个配置文件就能快速搭建起包含数据库、缓存、Web 服务等完整的应用栈,避免了手动配置各服务环境的复杂流程;而对运维人员来说,Docker Compose 实现了部署的标准化和自动化,无论在开发、测试还是生产环境,只需执行相同的命令,就能确保应用的一致性部署,有效降低了运维成本和出错概率。此外,它还支持服务的弹性扩展,当应用负载增加时,通过简单的命令即可增加容器实例数量,轻松应对高并发场景。同时,其依赖管理功能可以清晰定义服务间的启动顺序和依赖关系,保障应用稳定运行。无论你是刚接触 Docker 的新手,还是想简化项目部署流程的老司机,10 分钟时间,跟随本文的实战步骤,都能轻松掌握 Docker Compose 的核心用法!

一、Docker Compose 是什么?
Docker Compose 是 Docker 官方提供的一个用于定义和运行多个 Docker 容器应用的工具。在实际项目中,一个完整的应用往往包含多个服务,比如后端服务器、数据库、缓存等,每个服务都需要独立运行在容器中。Docker Compose 通过 YAML 格式的配置文件,将这些服务的配置、依赖关系、网络设置等进行统一编排,用户只需执行一条命令,就能快速部署和启动整个应用栈,避免了逐个启动容器的繁琐操作。
二、安装 Docker Compose
在开始实战前,确保你已经安装了 Docker。不同操作系统安装 Docker Compose 的方式略有不同:
1. Linux 系统
通过以下命令下载并安装 Docker Compose(以 Ubuntu 为例):
sudo curl -L "https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
2. macOS 系统
使用 Homebrew 安装:
brew install docker-compose
3. Windows 系统
在 Docker Desktop 安装时,Docker Compose 会自动集成,无需额外安装。
安装完成后,在命令行输入docker-compose –version验证是否安装成功,若显示版本信息,则安装成功。
三、实战演练:一键部署 Web 应用 + 数据库
接下来,我们以一个简单的 Web 应用与 MySQL 数据库的组合为例,体验 Docker Compose 的便捷性。
1. 创建项目目录
首先,在本地创建一个项目目录,比如my-compose-project,并进入该目录:
mkdir my-compose-project
cd my-compose-project
2. 编写 Docker Compose 配置文件
在项目目录下创建一个名为docker-compose.yml的文件,使用文本编辑器打开,并输入以下内容:
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
上述配置文件定义了两个服务:
- web:基于 Nginx 镜像创建容器,将容器内的 80 端口映射到主机的 8080 端口,并且该服务依赖于db服务。
- db:基于 MySQL 8.0 镜像创建容器,设置了数据库的 root 密码和要创建的数据库名称。
3. 启动容器
在项目目录下,打开命令行终端,执行以下命令启动容器:
docker-compose up -d
-d参数表示以后台模式运行容器。等待片刻后,Docker Compose 会自动下载所需镜像,并按照配置文件启动两个容器。
4. 验证部署结果
在浏览器中输入 http://localhost:8080,如果看到 Nginx 的默认欢迎页面,说明 Web 服务已成功启动;同时,MySQL 数据库也在后台正常运行。
5. 停止和删除容器
当不再需要这些容器时,可以使用以下命令停止并删除它们:
docker-compose down
该命令会停止所有由 Docker Compose 启动的容器,并删除相关的网络资源。
四、进阶技巧
1. 自定义网络
默认情况下,Docker Compose 会为项目创建一个专属的网络。如果你需要自定义网络配置,可以在docker-compose.yml中添加networks字段:
version: '3'
services:
web:
image: nginx:latest
ports:
- "8080:80"
networks:
- my-network
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
networks:
- my-network
networks:
my-network:
driver: bridge
2. 数据持久化
为了防止容器删除后数据丢失,可以使用volumes字段将容器内的数据挂载到主机目录:
version: '3'
services:
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: mydb
volumes:
-./data:/var/lib/mysql
上述配置会将主机当前目录下的data目录与容器内的/var/lib/mysql目录进行挂载,保证数据的持久存储。
五、常见 Docker Compose 部署场景
1. 全栈 Web 应用开发
在全栈开发场景中,一个应用通常包含前端、后端、数据库和消息队列等多个服务。例如,使用 Vue.js 搭建前端界面,Node.js 开发后端 API,搭配 MongoDB 数据库和 RabbitMQ 消息队列。通过 Docker Compose,可将这些服务分别配置在不同容器中,定义好端口映射和数据卷挂载,实现本地开发环境与生产环境的高度一致,方便团队成员快速启动项目,减少环境配置带来的问题。
2. 微服务架构部署
对于采用微服务架构的项目,如电商系统中订单服务、库存服务、支付服务等相互独立又需要通信协作的微服务。Docker Compose 能够轻松编排这些微服务容器,通过自定义网络实现服务间的安全通信,并利用scale命令根据业务流量动态扩展服务实例,确保系统在高并发下的稳定性和可扩展性。
3. 开发测试一体化环境
在持续集成 / 持续交付(CI/CD)流程中,Docker Compose 可以用来快速搭建测试环境。开发人员提交代码后,CI 工具可通过 Docker Compose 启动包含应用、数据库、测试框架等容器的完整测试环境,自动执行单元测试、集成测试,保证代码质量,加速开发迭代。
4. 数据分析与处理平台
在大数据分析场景下,Docker Compose 可用于部署 Hadoop、Spark、Hive 等大数据组件。通过配置文件,将各个组件的容器进行合理编排,实现数据的存储、处理和分析功能。例如,使用 HDFS 存储数据,Spark 进行分布式计算,Hive 提供数据查询服务,方便数据科学家和工程师快速搭建和管理数据分析平台。
5. 个人博客系统部署
假设我们要部署一个基于 WordPress 的个人博客系统,该系统需要一个 Web 服务器、数据库和 WordPress 应用三个服务协同工作。
- 创建项目目录:在本地新建文件夹wordpress-blog,并进入该目录。
- 编写docker-compose.yml文件:
version: '3'
services:
webserver:
image: httpd:latest
ports:
- "80:80"
volumes:
-./html:/var/www/html
depends_on:
- db
- wordpress
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: mysecretpassword
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpressuser
MYSQL_PASSWORD: wordpresspass
volumes:
- db_data:/var/lib/mysql
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: wordpressuser
WORDPRESS_DB_PASSWORD: wordpresspass
WORDPRESS_DB_NAME: wordpress
volumes:
-./wp-content:/var/www/html/wp-content
depends_on:
- db
volumes:
db_data:
在上述配置中,webserver使用 Apache 镜像,将主机的./html目录挂载到容器内用于存放静态文件;db使用 MySQL 5.7 镜像,并设置数据库相关账号密码,同时通过数据卷db_data实现数据持久化;wordpress服务则依赖数据库,并将主机的./wp-content目录挂载到容器内,用于保存 WordPress 的插件和主题数据。
启动服务:在项目目录下的命令行中执行docker-compose up -d,Docker Compose 会自动下载所需镜像并启动三个容器。
访问博客系统:在浏览器中输入 http://localhost,即可进入 WordPress 的安装配置页面,按照提示完成安装后,就能拥有一个属于自己的个人博客系统。
通过以上步骤和常见部署场景的介绍,你已经掌握了 Docker Compose 的核心用法。从简单的多容器部署到复杂的业务场景应用,Docker Compose 能满足各类项目需求。后续你可以尝试将其应用到自己的开发项目中,进一步探索它的强大功能。


