将Docker Compose与多个配置文件(例如to allow multiple environments to share a common configuration file)一起使用时,我无法确定CLI中的所有命令是否需要提及所有配置文件。
例如,我有 docker.compose.yml 和 docker.compose.dev.yml ,我就这样启动了我的开发环境:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up -d
如果我想在服务上运行命令,我可以使用:
docker-compose web ls
或者我可以使用:
docker-compose -f docker-compose.yml -f docker-compose.dev.yml run ls
这两个命令都有效,所以我不确定配置文件是否在构建后与容器相关联。
答案 0 :(得分:1)
据我所知,如果您希望在运行docker-compose CLI命令时应用覆盖配置文件,则需要指定所有配置文件。
这可能并不总是很明显:问题中提供的示例(docker-compose web ls
和docker-compose -f docker-compose.yml -f docker-compose.dev.yml run ls
) 可能 都运行没有错误(实际上取决于您正在运行的命令,但 docker-compose.dev.yml 中的所有设置都不会应用。
以下是一个可能出现问题的示例:
docker-compose run web python manage.py collectstatic
时,文件将上传到生产地址,从而可能导致意外的生产更改。考虑到所有这些,我建议将 docker-compose.yml 重命名为 docker-compose.base.yml ,因此运行docker-compose run web python manage.py collectstatic
会关于 docker-compose.yml 缺失的错误。
备用设置注意事项:多个环境的备用设置,如引用的Compose文档中所述,是在docker文件中使用extends
关键字。 Rackspace开发了一个示例项目available on Github,它提供了使用此功能的一个很好的例子。