Docker Compose的extends关键字允许在不同文件甚至整个项目之间共享通用配置。如果您有多个服务可以重用一组通用的配置选项,则扩展服务很有用。使用extends您可以在一个地方定义一组通用的服务选项,并可以从任何地方引用它。
请记住,volumes_from并且depends_on永远不会在使用的服务之间共享extends。这些异常的存在是为了避免隐式依赖性。您总是volumes_from在本地定义。这样可以确保在读取当前文件时,服务之间的依赖关系清晰可见。在本地定义这些文件还可以确保对引用文件的更改不会破坏任何内容。
在中定义任何服务时docker-compose.yml,您可以声明要扩展另一个服务,如下所示:
web:
extends:
file: common-services.yml
service: webapp
这指示Compose重新使用webapp该common-services.yml文件中定义的服务的配置。假设common-services.yml 看起来像这样:
webapp:
build: .
ports:
– “8000:8000”
volumes:
– “/data”
在这种情况下,您获得的结果与使用编写 docker-compose.yml的完全相同build,ports并且volumes直接在之下定义了配置值web。
您可以在以下位置进一步定义本地配置(或重新定义)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