🐳

docker-composeでエイリアスを利用して記述量を減らす

2024/03/05に公開

概要

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