Docker Compose的extends關(guān)鍵字允許在不同文件甚至整個(gè)項(xiàng)目之間共享通用配置。如果您有多個(gè)服務(wù)可以重用一組通用的配置選項(xiàng),則擴(kuò)展服務(wù)很有用。使用extends您可以在一個(gè)地方定義一組通用的服務(wù)選項(xiàng),并可以從任何地方引用它。
請(qǐng)記住,volumes_from并且depends_on永遠(yuǎn)不會(huì)在使用的服務(wù)之間共享extends。這些異常的存在是為了避免隱式依賴性。您總是volumes_from在本地定義。這樣可以確保在讀取當(dāng)前文件時(shí),服務(wù)之間的依賴關(guān)系清晰可見。在本地定義這些文件還可以確保對(duì)引用文件的更改不會(huì)破壞任何內(nèi)容。
在中定義任何服務(wù)時(shí)docker-compose.yml,您可以聲明要擴(kuò)展另一個(gè)服務(wù),如下所示:
web:
extends:
file: common-services.yml
service: webapp
這指示Compose重新使用webapp該common-services.yml文件中定義的服務(wù)的配置。假設(shè)common-services.yml 看起來像這樣:
webapp:
build: .
ports:
- "8000:8000"
volumes:
- "/data"
在這種情況下,您獲得的結(jié)果與使用編寫 docker-compose.yml的完全相同build,ports并且volumes直接在之下定義了配置值web。
您可以在以下位置進(jìn)一步定義本地配置(或重新定義) docker-compose.yml:
web:
extends:
file: common-services.yml
service: webapp
environment:
- DEBUG=1
cpu_shares: 5
important_web:
extends: web
cpu_shares: 10
您還可以編寫其他服務(wù)并將您的web服務(wù)鏈接到它們:
web:
extends:
file: common-services.yml
service: webapp
environment:
- DEBUG=1
cpu_shares: 5
depends_on:
- db
db:
image: postgres








