Docker Compose(五)
5.Docker Compose
Docker Compose 是用于管理多容器应用的工具。它通过一个 YAML 文件集中配置多个服务,然后用一条命令即可启动整个应用。
它主要解决容器间的依赖关系和启动顺序问题,常用于开发、测试以及 CI/CD 环境,便于统一管理和团队协作。
一、安装
新版 docker 安装时已经集成了 docker compose
二、文件结构
1.概述
Docker Compose 通过 docker-compose.yml 文件(YAML 格式)来定义多容器应用。一个典型的 Compose 文件包含四个顶级元素:
-
version– 指定 Compose 文件格式版本(可选) -
services – 定义各个容器服务(核心) -
networks– 配置自定义网络(可选) -
volumes– 声明数据卷(可选)
YAML 语法小贴士:使用缩进表示层级,冒号
: 表示键值对,连字符-表示列表项。
2.示例
WordPress 应用配置
version: '3.8'
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_DATABASE: wordpress
networks:
- backend
wordpress:
image: wordpress:latest
ports:
- "80:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
depends_on:
- db
networks:
- frontend
- backend
networks:
frontend:
backend:
volumes:
db_data:示例要点:
- 两个服务:
MySQL、wordpress - 数据卷
db_data持久化数据库 - 环境变量配置数据库和 WordPress
- 端口映射:主机
80 → 容器80 - 服务依赖:
wordpress 依赖db(启动顺序) - 自定义网络:
frontend、backend
3.各组成部分详解
3.1 version
指定 Compose 文件格式版本(需引号包裹)。常用版本:3.8、3.9 等。版本需与安装的 Docker Compose 兼容。
version: '3.8'若不指定,默认使用最新版本,但建议显式声明。
3.2 services
定义运行的容器服务,是 Compose 文件的核心。每个服务对应一个容器,服务名称自定义。
基本结构:
services:
服务名称:
配置项: 值常用配置项:
| 配置项 | 说明 | 示例 |
|---|---|---|
image |
使用的镜像(来自仓库或本地) | image: nginx:latest |
build |
使用本地 Dockerfile 构建 | build: ./dir |
ports |
端口映射 "宿主机:容器" |
- "8080:80" |
volumes |
挂载卷(主机路径或命名卷) | - /host/data:/container/data |
environment |
设置环境变量 | - ENV_VAR=value |
depends_on |
声明服务依赖(控制启动顺序) | - db |
restart |
重启策略(如 always) |
restart: always |
command |
覆盖容器默认启动命令 | command: ["python", "app.py"] |
服务配置示例:
services:
web:
build: .
ports:
- "5000:5000"
volumes:
- .:/code
environment:
FLASK_ENV: development
depends_on:
- redis
redis:
image: redis:alpine
volumes:
- redis_data:/data3.3 networks
定义自定义网络。容器可通过网络名称互相通信。默认创建 bridge 驱动网络。
networks:
frontend:
driver: bridge
backend:
driver: bridge服务中使用网络:
services:
web:
networks:
- frontend
db:
networks:
- backend隔离性:不同网络的容器默认不能互相访问。
3.4 volumes
声明数据卷,用于持久化存储和容器间共享数据。卷数据独立于容器生命周期(删除容器不删卷)。
volumes:
db_data: # 可指定驱动,默认 local
app_data:服务中使用卷:
services:
db:
volumes:
- db_data:/var/lib/mysql三、常用操作命令
| 功能 | 命令 | 说明 |
|---|---|---|
| 启动服务 | docker-compose up -d |
在后台启动所有服务,-d 表示 detached 模式 |
| 停止服务 | docker-compose down |
停止并移除所有容器、网络和卷 |
| 查看状态 | docker-compose ps |
显示各容器的运行状态 |
| 查看日志 | docker-compose logs |
输出容器日志,加 -f 可以跟踪实时日志 |
| 构建镜像 | docker-compose build |
如果服务使用本地 Dockerfile,docker-compose build 会重新构建镜像 |
| 重启服务 | docker-compose restart |
重启所有服务或指定服务 |
| 单服务操作 | docker-compose start wordpress |
可以针对单个服务执行命令 |