Docker超入門:Docker Compose必須知識!YAMLの書き方と実践ポイント

Docker Composeを使うなら、まず押さえておきたいのが 「YAMLファイルの書き方」 です。
 このYAML(ヤムル)という書式が、Docker Composeの「設計図」のような役割を果たしており、複数のコンテナやネットワーク設定を一括で定義できるようになっています。

 ここでは、Docker Composeで使われるYAMLの基本構造と書き方、そして作成時の注意点をわかりやすく解説していきます。

YAMLとは?

YAMLは「YAML Ain’t Markup Language(YAMLはマークアップ言語ではない)」の略です。
 名前のとおり、HTMLのようなタグ構造ではなく、人間に読みやすく、機械にも解析しやすい ことを目的としたデータ記述形式です。

 Docker Composeでは、このYAMLファイルを読み込むことで、複数のコンテナをまとめて起動・停止・管理できるようになっています。

YAMLファイルの基本構造

YAMLでは「キー: 値」のペアでデータを定義します。
さらに階層構造(ネスト)を表すために、インデント(スペース) を使います。

たとえば、以下のような構造になります。

キー1: 値1
キー2:
  - アイテム1
  - アイテム2
キー3:
  サブキー1: 値3-1
  サブキー2: 値3-2

ここで重要なのは以下のポイントです 👇

要素説明
キーと値「key: value」の形式で1行ずつ記述します。
コロン(:)マップ(連想配列)を表すときに使います。
ハイフン(-)リスト(配列)を表すときに使います。
インデント階層を示すための空白(スペース2〜4つ)を使います。Tabキーは使わないこと!

Docker ComposeでのYAMLの実例

Docker Composeでは、このYAMLを使って複数コンテナの設定を定義します。
以下は、NginxとMariaDBをまとめて起動するためのYAMLの例です。

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "8080:80"

  db:
    image: mariadb:latest
    environment:
      - MARIADB_ROOT_PASSWORD=rootpass
      - MARIADB_DATABASE=sampledb
      - MARIADB_USER=sampleuser
      - MARIADB_PASSWORD=password

この例では、2つのサービス(webとdb)が定義されています。
YAMLではこのように、階層構造で「サービス → 設定項目」 の順に書きます。

各要素の意味を整理しよう

要素説明
versionDocker Composeファイルのバージョン。現在は「3.8」がよく使われます。
services定義するコンテナ群(サービス)をまとめるセクション。
web / db各サービス名(コンテナ名の別名のようなもの)。
image使用するDockerイメージを指定。例:nginx:latest、mariadb:latest
portsホスト側ポートとコンテナ側ポートの対応を定義(例:"8080:80")。
environmentコンテナ内で設定する環境変数を指定。パスワードやDB名などを定義。

このように、YAMLは一見シンプルに見えて、構造を正しく理解することが超重要 です。

YAML作成の注意点

YAMLファイルを作成するときにやりがちなミスと、その対策をまとめました。

よくあるミス原因対策
mapping values are not allowed here エラーインデントにTabキーを使った。インデントはスペースを使う。
項目が意図しない階層に入る。インデント幅が不揃いスペース数を統一(2または4)
文字列が誤解釈される。特殊文字(: や # など)をそのまま記述値をダブルクォートで囲む。

特にインデントは命!
1段階下げるたびにスペース2つ(または4つ)を使うのが基本ルールです。

まとめ

YAMLはDocker Composeを使いこなすうえでの“基本中の基本”。
 インデントと構造をしっかり理解すれば、複数コンテナの設定もスッキリ整理できて、ミスもぐっと減ります。

Composeを使うなら、まずはこのYAMLの感覚を身につけましょう!