为什么需要指定配置文件?
默认情况下,Docker Compose 会自动查找当前目录下的 docker-compose.yml(或 docker-compose.yaml)文件。
但在实际开发和部署中,我们常常需要:
- 为不同环境(开发、测试、生产)使用不同的配置
- 将服务拆分为多个配置文件便于管理
- 临时覆盖某些配置进行调试
使用 -f 参数指定配置文件
通过 -f(或 --file)选项,可以明确指定一个或多个 Compose 文件:
# 使用单个自定义配置文件
docker-compose -f my-compose.yml up -d
# 合并多个配置文件(按顺序叠加)
docker-compose -f base.yml -f override.yml up -d
注意:多个文件中的配置会按从左到右的顺序合并,后面的会覆盖前面的同名字段。
常见使用场景示h2>
1. 环境分离
# 开发环境
docker-compose -f docker-compose.dev.yml up
# 生产环境
docker-compose -f docker-compose.prod.yml up
2. 覆盖默认配置
# docker-compose.yml(基础配置)
services:
web:
image: nginx
# docker-compose.override.yml(本地开发覆盖)
services:
web:
ports:
- "8080:80"
# 开发环境
docker-compose -f docker-compose.dev.yml up
# 生产环境
docker-compose -f docker-compose.prod.yml up# docker-compose.yml(基础配置)
services:
web:
image: nginx
# docker-compose.override.yml(本地开发覆盖)
services:
web:
ports:
- "8080:80"当两个文件都存在时,Docker Compose 会自动合并它们(无需显式使用 -f)。
小贴士
- 可结合
COMPOSE_FILE环境变量设置默认文件列表 - 使用
docker-compose config可预览最终合并后的配置 - 路径支持相对路径和绝对路径