【Docker】Docker compose ~ 拡張フィールド ~

■ はじめに

https://dk521123.hatenablog.com/entry/2021/10/11/134840

で、Airflow の docker-compose.yml を触っている際に、
いくつか不明な表記があった。

その中で「拡張フィールド」について扱う。

Airflow の docker-compose.yml
https://airflow.apache.org/docs/apache-airflow/stable/docker-compose.yaml

x-airflow-common:
  &airflow-common # ★今回のテーマ
  # In order to add custom dependencies or upgrade provider packages you can use your extended image.
  # Comment the image line, place your Dockerfile in the directory where you placed the docker-compose.yaml
  # and uncomment the "build" line below, Then run `docker-compose build` to build the images.
  image: ${AIRFLOW_IMAGE_NAME:-apache/airflow:2.10.0} # ☆ここは別記事「Docker compose ~ 環境変数 ~」参照
# ・・・略・・・
  airflow-webserver:
    <<: *airflow-common # ★今回のテーマ

Docker compose ~ 環境変数
https://dk521123.hatenablog.com/entry/2024/08/22/000539

目次

【1】拡張フィールド (Extension fields)
 1)用途
 2)サンプル
【2】その他Tips
 1)アンカー(&) / エイリアス(*)
 2)マージ(<<)

【1】拡張フィールド (Extension fields)

* Compose 形式 バージョン 3.4 で追加
* 「x-【キー】」で定義

https://docs.docker.jp/compose/compose-file/compose-file-v3.html#extension-fields

1)用途

* 定義を再利用する時に使用

2)サンプル

version: "3.9"

x-volumes: &default-volume
# 以下も同じ
# x-volumes:
#  &default-volume
  driver: foobar-storage

services:
  web:
    image: myapp/web:latest
    volumes: ["vol1", "vol2", "vol3"]
volumes:
  vol1: *default-volume
  vol2:
    << : *default-volume
    name: volume02
  vol3:
    << : *default-volume
    driver: default
    name: volume-local

【2】その他Tips

1)アンカー(&) / エイリアス(*)

* アンカー(&) が変数定義、エイリアス(*)が変数参照
* 詳細は、以下の関連記事を参照のこと

YAML (YAML Ain't Markup Language)
https://dk521123.hatenablog.com/entry/2019/10/13/000000

2)マージ(<<)

* マッピングをマージしたい場合は、<< を利用
* 詳細は、以下の関連記事を参照のこと

YAML (YAML Ain't Markup Language)
https://dk521123.hatenablog.com/entry/2019/10/13/000000

関連記事

Docker compose ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2022/04/28/000000
Docker compose ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/05/21/222910
Docker compose ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2020/04/11/000000
Docker compose ~ 環境変数
https://dk521123.hatenablog.com/entry/2024/08/22/000539
Apache Airflow ~ 環境構築 / Docker 編 ~
https://dk521123.hatenablog.com/entry/2021/10/11/134840
YAML (YAML Ain't Markup Language)
https://dk521123.hatenablog.com/entry/2019/10/13/000000