有的时候Docker Compose中会有重复内容,本着DRY的精神(能少敲一下就少敲一下),可以使用锚点和引用-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" #也可以覆盖默认值
当然这也不是万能的:
- 在YAML中alias不支持跨文件,所以想要利用docker compose支持-f 来定义多个compose文件的便利,一处定义多处引用的想法是不现实的。
- 对数组类型的值是不支持引用的,下面这种情况就不能偷懒了。
x-ports: &default-ports
- "8000:8000"
- "8888:8888"
services:
webA:
ports:
<<: *default-ports
- "9999:9999"