在使用 Docker Compose 进行容器编排时,我们常常需要为不同环境(如开发、测试、生产)使用不同的配置文件。Docker Compose 提供了灵活的方式让你指定自定义的配置文件。
基本用法:使用 -f 参数
默认情况下,Docker Compose 会读取当前目录下的 docker-compose.yml 文件。你可以通过 -f(或 --file)参数指定其他配置文件:
docker-compose -f docker-compose.prod.yml up -d
组合多个配置文件
你还可以同时指定多个配置文件,Docker Compose 会按顺序合并它们(后面的会覆盖前面的同名配置):
docker-compose -f docker-compose.yml -f docker-compose.override.yml up -d
这种模式非常适合将通用配置放在 docker-compose.yml 中,而将环境特定的配置(如端口映射、环境变量)放在 docker-compose.override.yml 或 docker-compose.prod.yml 中。
常见使用场景
- 开发 vs 生产环境:开发使用本地卷挂载,生产使用只读卷或无挂载。
- 多阶段部署:测试、预发、正式环境使用不同配置。
- 功能开关:通过不同配置启用/禁用某些服务。
注意事项
- 所有路径都是相对于命令执行目录的,建议使用绝对路径避免混淆。
- 如果未指定
-f,且当前目录没有docker-compose.yml,命令会报错。 - 可以配合
-p参数指定项目名称,避免不同环境的服务名冲突。
示例:生产环境启动
docker-compose -f ./configs/docker-compose.prod.yml -p myapp-prod up -d