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

 Docker Composeを使いこなすうえで欠かせないのが、「YAMLファイル(compose.yaml)」 の理解です。
複数のコンテナをまとめて管理したいとき、長いDockerコマンドを毎回入力するのは面倒ですよね。
そこで活躍するのがYAML形式の設定ファイル。
 1つのcompose.yamlファイルにすべての設定をまとめておけば、1コマンドで環境全体を起動・停止できるようになります。

 ここでは、実際の例を交えながらDocker ComposeでのYAMLの書き方とポイントを、やさしく解説していきます。

YAMLでコンテナを管理する仕組み

Docker Composeでは、複数コンテナの設定をYAML形式のファイルで定義します。
このファイルは、コンテナ名、イメージ、ポート、環境変数などをわかりやすく整理できるようになっており、
複数のコマンド入力を一度に済ませられる便利な仕組みです。

たとえば、次のような compose.yaml ファイルを考えてみましょう。

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
  db:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: example

この設定では、NginxコンテナMySQLコンテナの2つをまとめて起動できます。

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

YAMLファイルの各行には、しっかりと意味があります。以下の表で整理してみましょう👇

要素説明
version使用するDocker Composeファイルのバージョンを指定。ここでは3.8を使用。
servicesコンテナ(サービス)をまとめるセクション。すべてのサービス設定はこの中に書く。
webサービスの名前。ここではNginxのコンテナを「web」という名前で管理。
image使用するDockerイメージを指定。ここではnginx:latestを指定。
portsホストのポートとコンテナのポートをマッピング(例: "80:80")。
dbMySQLコンテナを定義するサービスの名前。
environment環境変数を定義。ここではMySQLのrootパスワードを設定している。

YAMLの構造はインデント(字下げ)で階層を表すのが特徴です。
この階層構造によって、設定内容がひと目で理解しやすくなっています。

YAMLファイルの拡張子について

YAMLファイルは、一般的に .yaml または .yml の拡張子を使います。
どちらを使っても構いませんが、現在は公式的に .yaml が推奨 されています。

たとえば、

  • compose.yaml(推奨)
  • docker-compose.yml(従来形式でもOK)

両方とも機能は同じです。既存のプロジェクトでは「.yml」形式もよく見かけますね。

Apacheコンテナを作成する例

もうひとつ別の例として、Apache HTTP ServerをDocker Composeで定義してみましょう。

version: '3.8'

services:
  apache:
    image: httpd:latest
    ports:
      - "80:80"

このファイルを使えば、Apacheサーバーのコンテナを一発で起動できます。
それぞれの項目をもう少し詳しく見てみましょう。

要素説明
versionDocker Composeファイルのバージョン指定。ここでは3.8を使用。
services定義するサービスのセクション開始。
apacheサービスの名前。ここではApacheサーバーを定義。
image使用するDockerイメージ。httpdの最新バージョンを利用。
portsホストのポート80をコンテナのポート80にマッピング。

この設定でDocker Composeを起動すると、
ブラウザから http://localhost にアクセスするだけでApacheの初期画面が表示されます。

YAMLを使うメリット

YAMLファイルを使う最大のメリットは、「設定の一元管理」 です。
複数のオプションを長いDockerコマンドで書く代わりに、
YAMLにまとめておけば、以下のようにスッキリ管理できます。

従来の方法Docker Composeの方法
docker run -d -p 80:80 nginxYAMLファイルに設定を記述し、docker compose upで起動
複数コンテナを個別にrunコマンドで管理すべてをservicesセクションにまとめて管理
手動で環境変数・ボリュームを指定YAML内で一括設定し再利用可能

この仕組みがあるおかげで、環境構築がシンプルかつ再現性の高いものになります。

まとめ

YAMLファイルは、Docker Composeの中核となる設定ファイルです。
Nginx、MySQL、Apacheなどの複数コンテナを1つのファイルで管理できる ため、
コマンド入力の手間を減らし、設定の見通しも抜群に良くなります。

覚えておくべきポイントは次の3つ👇

  1. インデントで階層を表す(スペース2つまたは4つで統一!)
  2. .yaml or .yml の拡張子を使う(どちらでもOK)
  3. 複数コンテナをまとめて起動・停止できる(docker compose up / down

これをマスターすれば、Docker Composeを使った開発環境構築がぐっと楽になります!