有的時(shí)候Docker Compose中會(huì)有重復(fù)內(nèi)容,本著DRY的精神(能少敲一下就少敲一下),可以使用錨點(diǎn)和引用-alias and anchors
version: "3.7"
x-app: &default-app
build:
context: "."
dockerfile: Dockerfile-APP
depends_on:
- "postgres"
- "redis"
image: "webapp:tag"
restart: "unless-stopped"
volumes:
- ".:/app"
services:
webA:
<<: *default-app
ports:
- "8000:8000"
webB:
<<: *default-app
restart: "always" #也可以覆蓋默認(rèn)值
當(dāng)然這也不是萬(wàn)能的:
- 在YAML中alias不支持跨文件,所以想要利用docker compose支持-f 來(lái)定義多個(gè)compose文件的便利,一處定義多處引用的想法是不現(xiàn)實(shí)的。
- 對(duì)數(shù)組類(lèi)型的值是不支持引用的,下面這種情況就不能偷懶了。
x-ports: &default-ports
- "8000:8000"
- "8888:8888"
services:
webA:
ports:
<<: *default-ports
- "9999:9999"