🐳
docker-composeでエイリアスを利用して記述量を減らす
概要
YAMLにはアンカーとエイリアスという機能があります。
docker-composeでも利用できるため紹介いたします。
エイリアスでデータ構造を参照する
version: '3.9'
services:
mysql: &mysqlalias
build:
context: .
dockerfile: ./docker/mysql/Dockerfile
target: local
environment:
- MYSQL_DATABASE=dev
- MYSQL_USER=dev
- MYSQL_PASSWORD=dev
- MYSQL_ROOT_PASSWORD=password
- TZ=Asia/Tokyo
volumes:
- mysql:/var/lib/mysql
ports:
- "3306:3306"
test-mysql:
<<: *mysqlalias
profiles: ["test"]
volumes: []
ports: []
volumes:
mysql:
1つ目のmysqlに対してアンカー(&mysqlalias
)を定義し、
インジェクト(<<
)とエイリアス(*mysqlalias
)を利用してデータ構造をマージさせています。
インジェクトとエイリアスのみではそのままコピーしてしまいますので、
必要箇所(volumesやport)のみ上書きする形で記述を追加しています。
テストコード実行用などのCLIで利用するコンテナが必要なときなど利用できそうですね🪼
ついでにサンプルのようにprofiles
を利用して必要な時のみコンテナを利用できるようにするとより良いと思います。
Discussion