一、什么是 Docker Compose
Docker Compose 是 Docker 官方提供的用于定义和运行多容器 Docker 应用程序的工具。在实际的微服务或全栈开发中,一个项目通常不仅包含业务代码(如 Spring Boot),还需要数据库(如 MySQL)、缓存(如 Redis)以及消息队列等多个组件。
如果使用传统的 docker run 命令,开发者需要手动逐个启动容器,并自行管理它们之间的网络连接、挂载卷和启动顺序。而 Docker Compose 允许开发者通过一个声明式的 YAML 配置文件(通常命名为 docker-compose.yml),将所有相关的服务定义在一起,并使用一条指令完成整个系统的启动、停止和管理。
二、核心概念:服务、网络与卷
理解 Docker Compose 的工作原理,需要掌握以下三个核心要素:
- 服务 (Services): 配置文件中的每一个独立组件(如
db或server)都被称为一个服务。每个服务都基于特定的镜像运行,并拥有独立的配置(环境变量、端口映射等)。 - 网络 (Networks): Docker Compose 在启动时会自动创建一个默认的虚拟网络。所有在该配置文件中定义的服务都会加入这个网络,它们可以通过服务名相互通信,而无需关心具体的 IP 地址。
- 卷 (Volumes): 用于实现数据的持久化。通过将宿主机的目录映射到容器内部,即使容器被删除或重建,数据(如 MySQL 的数据库文件)依然会保存在物理磁盘上。
三、为什么在生产环境中使用 Docker Compose
对于开发者而言,Docker Compose 解决了以下核心痛点:
- 配置即代码 (IaC):整个环境的配置以 YAML 文件形式存储在代码库中,保证了开发、测试和生产环境的一致性,防止“在我的电脑上能跑,服务器上不行”的问题。
- 一键式部署:通过
docker compose up -d即可完成复杂环境的搭建,极大降低了运维门槛。 - 资源编排:支持定义容器间的依赖关系(如
depends_on),确保数据库启动完成后再启动后端应用。 - 易于维护:支持滚动更新、自动重启以及日志统一收集,是中小型项目实现容器化管理的最佳实践。