Docker Compose扩展配置教程
Docker Compose 中的 extends 关键字使得在不同文件或者整个项目中共享通用配置变得可行。这在多个服务需要重用一套配置选项时尤为有用。通过 extends,您可以在一个地方定义一组通用的服务选项,并在其他地方引用。
需要注意的是,volumes_from 和 depends_on 这两个选项不会在使用的服务之间共享 extends。这种设计是为了防止隐式依赖的产生。因此,您应该始终在本地定义 volumes_from,以确保在查看当前文件时,服务之间的依赖关系是清晰的。此外,本地定义这些选项也可以确保引用文件的修改不会影响当前服务的正常运行。
在 docker-compose.yml 文件中定义任何服务时,可以通过如下方式声明扩展另一个服务:
web:
extends:
file: common-services.yml
service: webapp
这段配置指向 common-services.yml 文件中定义的 webapp 服务的配置。假设 common-services.yml 文件的内容如下:
webapp:
build: .
ports:
- "8000:8000"
volumes:
- "/data"
在这种情况下,最终结果与直接在 web 下定义 build、ports 和 volumes 的配置效果相同。
您还可以在 docker-compose.yml 中进一步定义本地配置(或重新定义):
web:
extends:
file: common-services.yml
service: webapp
environment:
- DEbug=1
CPU_shares: 5
important_web:
extends: web
CPU_shares: 10
您还可以创建其他服务并将其与您的 web 服务链接:
web:
extends:
file: common-services.yml
service: webapp
environment:
- DEbug=1
CPU_shares: 5
depends_on:
- db
db:
image: postgres