
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ではこのように、階層構造で「サービス → 設定項目」 の順に書きます。
各要素の意味を整理しよう
| 要素 | 説明 |
|---|---|
| version | Docker 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の感覚を身につけましょう!
