## 5.1 Docker Compose 简介
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的强大工具。它允许开发人员在单个“docker-compose.yml”文件中描述整个应用程序堆栈,包括服务、网络和卷。只需一个命令,Docker Compose 就可以部署和管理整个应用程序堆栈。
### 5.1.1 Docker Compose 的主要特性
- **声明性语法:** 使用简单且人类可读的 YAML 文件定义服务、网络和卷。
- **服务扩展:** 轻松扩展或缩减服务以满足不断变化的需求。
- **环境变量和Secerts:** 使用环境变量配置服务并管理Secerts。
## 5.2 编写 Docker Compose 文件
Docker Compose 文件描述多容器应用程序的服务、网络和卷。让我们使用 Web 应用程序和数据库创建一个简单的示例。
### 5.2.1 演示:创建 Docker Compose 文件
1. 为您的项目创建一个新目录:
mkdir my-compose-app
cd my-compose-app
2. 创建一个包含以下内容的 `docker-compose.yml` 文件:
version: '3'
services:
web:
image: nginx:alpine
ports:
- "80:80"
db:
image: postgres:alpine
environment:
POSTGRES_PASSWORD: mysecretpassword
3. 运行应用程序堆栈:
docker-compose up -d
4. 访问 `http://localhost` 的 Web 服务器并验证正在运行的容器:
docker-compose ps
5. 停止并删除应用程序堆栈:
docker-compose down
## 5.3 使用 Docker Compose 进行编排
Docker Compose 不仅简化了多容器应用程序的部署,还支持整个堆栈的编排。它确保所有容器都以正确的顺序并使用必要的配置启动。
### 5.3.1 演示:具有依赖关系的编排
扩展前面的示例来展示 Docker Compose 如何编排依赖关系:
1. 修改 `docker-compose.yml` 文件以包含依赖项:
version: '3'
services:
web:
image: nginx:alpine
ports:
- "80:80"
depends_on:
- db
db:
image: postgres:alpine
environment:
POSTGRES_PASSWORD: mysecretpassword
2. 运行更新的应用程序堆栈:
docker-compose up -d
3. Docker Compose 确保仅在“db”服务启动并运行后才启动“web”服务。
## 5.4 环境变量和秘密
Docker Compose 允许您管理服务的环境变量,方便配置管理。此外,可以使用 Docker Compose 安全地管理机密。
### 5.4.1 演示:使用环境变量
1.修改`docker-compose.yml`文件以使用环境变量:
version: '3'
services:
web:
image: nginx:alpine
ports:
- "80:80"
environment:
DATABASE_URL: postgres://user:password@db:5432/mydatabase
db:
image: postgres:alpine
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
2. 运行更新的应用程序堆栈:
docker-compose up -d
3. `web` 服务现在可以使用指定的环境变量访问 `db` 服务。
Docker Compose 是一个非常有价值的工具,可以简化多容器应用程序的部署和编排。通过在单个文件中定义应用程序堆栈,您可以轻松管理复杂的设置、扩展服务并处理依赖项。在接下来的章节中,我们将探索更高级的 Docker 功能,包括 Docker Swarm 和 Kubernetes 等编排工具。