Edited at

docker-compose 3.4から追加されたExtension Fieldを使ってdocker-compose.yml でアンカー エイリアスを使う

More than 1 year has passed since last update.

ymlのアンカーとエイリアスを使うのは前々から出来たのですが、 docker-compose v3.4 以前は services 内にアンカーを書かなくてはいけなく少し不便だなと思っていました。

参考記事: docker-compose V3 で extends っぽい事をする

v3.4 から更に管理しやすくなったのでメモ。


Extension Field

https://docs.docker.com/compose/compose-file/#extension-fields

v3.4 でExtension Fieldが追加されました。servicesなどを記述できるトップレベルに、自由にフィールドを追加できます。

こんな感じの docker-compose.yml があるとします。

version: '3'

services:

web: &web
build: .
restart: always
image: app
env_file: ./.env
command: ["./wait-for-it.sh", "mysql:9200", "--", "nodemon"]
depends_on:
- redis
- mysql

worker:
environment:
WORKER: "true"
<<: *web

redis:
image: redis:latest

mysql:
image: mysql:5

v3.4からは次のようにできます。

version: '3.4'

x-template: &template
build: .
restart: always
image: app
env_file: ./.env
command: ["./wait-for-it.sh", "mysql:9200", "--", "nodemon"]
depends_on:
- redis
- mysql

services:

web:
<<: *template

worker:
environment:
WORKER: "true"
<<: *template

redis:
image: redis:latest

mysql:
image: mysql:5