# Docker Compose
# 为什么需要 Compose
当项目有多个服务时(例如 web + mysql + redis),单独用 docker run 管理会很繁琐。
Compose 可以用一个 compose.yaml 文件,把多个服务统一编排和启动。
# 基础示例
services:
web:
image: nginx:latest
ports:
- "8080:80"
depends_on:
- redis
redis:
image: redis:7
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
# 常用命令
# 启动
docker compose up -d
# 停止并删除容器
docker compose down
# 查看日志
docker compose logs -f
# 查看服务状态
docker compose ps
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# Node + MySQL + Redis 示例
services:
app:
build: .
container_name: blog-app
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- MYSQL_HOST=mysql
- REDIS_HOST=redis
depends_on:
- mysql
- redis
mysql:
image: mysql:8
container_name: blog-mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: blog
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
redis:
image: redis:7
container_name: blog-redis
restart: always
ports:
- "6379:6379"
volumes:
mysql_data:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 使用建议
depends_on只控制启动顺序,不保证服务已就绪。- 配置分环境:
compose.yaml+compose.prod.yaml。 - 生产环境建议加
restart策略与健康检查。