Docker超入門:Docker Composeファイルの基本構造と主要な項目解説

Docker Composeを使うと、複数のコンテナをまとめて管理できるようになります。
その中心となるのが 「compose.yaml」 ファイルです。
 このファイルにコンテナの設定を記述することで、複雑な環境をたった1つのコマンドで起動できます。

 ここでは、「compose.yaml」の基本構造や主要な項目について、実際の例を交えて分かりやすく解説します。

Docker Composeファイルとは?

Docker Composeを使ってコンテナを起動するには、まず compose.yaml ファイルが必要です。
 このファイルには、どんなコンテナを起動するか、どのポートを開放するか、どのネットワークを使うか…など、
コンテナの構成情報をすべて書き込みます。

 そして、Composeファイルを保存した ディレクトリ名 が、そのままDocker Composeの プロジェクト名 になります。

プロジェクト名の仕組み

Docker Composeでは、複数のコンテナをまとめて管理するために「プロジェクト」という単位で扱います。
このプロジェクト名は、コンテナやネットワークなどの識別子として使われます。

種類内容
デフォルト名Composeファイルを置いたディレクトリ名が自動的にプロジェクト名になります。
指定方法docker compose -p プロジェクト名 up のように -p オプションで明示的に指定できます。
役割同じホスト上で複数のプロジェクトを動かしても、リソース名の衝突を防ぐための識別子になります。

たとえば、プロジェクト名が myapp の場合、作成されるコンテナやネットワークは
myapp_web_1myapp_default のように自動で命名されます。

Composeファイル名の違い(V1とV2)

Docker Composeにはバージョンによってファイル名の扱いに違いがあります。

バージョン読み込まれるファイル名備考
V1docker-compose.yaml / docker-compose.yml旧来のComposeで使用されていた形式。
V2compose.yaml / compose.yml(推奨)docker-compose.yaml / yml(互換あり)V2からは「compose.yaml」が正式推奨。複数存在する場合は「compose.yaml」が優先されます。

つまり、現在は compose.yaml が最も推奨されるファイル名です。
過去のプロジェクトでは docker-compose.yaml を見かけることもありますが、
今後はできるだけ「compose.yaml」に統一しましょう。

YAML形式の書き方ルール

Composeファイルは YAML形式 で記述します。
YAMLは人間にも読みやすく、機械にも解析しやすいデータ形式です。
ただし、インデントやスペース の扱いがとても重要です。

以下の表で、YAMLの基本ルールを整理しましょう👇

ルール説明
1. インデント半角スペースで階層を表す。タブは禁止。
2. 「キー: 値」形式設定は キー: 値 のペアで記述する。
3. 半角スペース「:」の後には半角スペース1つが必要。
4. 文字列" " または ' ' で囲むことができる。
5. リスト先頭に「-」をつけて書く。例:- "80:80"
6. コメント「#」以降はコメントとして扱われる。

✅ 例:YAMLの書き方

services:
  apache:
    image: httpd:2.4
    ports:
      - "80:80"
    networks:
      - network01
    volumes:
      - volume01

このYAMLでは、Apacheコンテナを作成し、
ポートの公開・ネットワーク接続・ボリュームマウントを定義しています。

services以外の主要項目

Composeファイルでは services: の下にコンテナを定義しますが、
それ以外にも多くの便利な項目があります。

項目説明
buildDockerfileの場所を指定し、イメージをビルドします。
commandコンテナ起動時に実行するコマンドを指定します。
container_nameコンテナに任意の名前をつけます。
depends_on他サービスの起動順序を指定します。
env_file環境変数を外部ファイルから読み込みます。
environment環境変数を直接指定します。
image使用するDockerイメージを指定します。
labelsコンテナにメタデータ(ラベル)を追加します。
networks接続するネットワークを指定します。
portsホストとコンテナのポートをマッピングします。
restartコンテナの再起動ポリシーを設定します。
volumesホストのディレクトリやファイルをマウントします。
ttyコンテナに仮想端末を割り当てるかどうかを指定します。
working_dirコンテナ起動時の作業ディレクトリを設定します。

これらを使うことで、コンテナの構成をより細かく制御できます。

例:Composeファイル全体の構造

services:
  apache:
    image: httpd:2.4
    ports:
      - "80:80"
    networks:
      - network01
    volumes:
      - volume01

networks:
  network01:

volumes:
  volume01:

各要素の意味

親要素子要素説明
servicesコンテナ定義をまとめるセクション。
apacheサービス名。ここではApacheコンテナを表す。
imagehttpd:2.4ApacheのDockerイメージを使用。
ports"80:80"ホスト80番ポートをコンテナ80番にマッピング。
networksnetwork01接続するネットワークを指定。
volumesvolume01マウントするボリュームを指定。

図で理解するDocker Compose構造

以下の図のように、Docker Composeファイルの構造をイメージすると理解しやすいです👇

この図のように、Composeファイルでは「services」「networks」「volumes」がそれぞれの構成を担い、
コンテナのライフサイクル全体を管理していることがわかります。

まとめ

Docker Composeファイル(compose.yaml)は、コンテナの設定をまとめて管理する強力なツールです。

ポイントまとめ

  • ディレクトリ名=プロジェクト名として扱われる。
  • V2では compose.yaml が推奨
  • YAML形式ではインデントとスペースが超重要
  • services 以外にも networksvolumes が大事な構成要素

Docker Composeを使いこなせば、開発環境の構築がぐっとスムーズになります!
次は、実際にこのComposeファイルを使ってコンテナを起動してみましょう 🚀