
【Docker基礎】Docker Composeファイルの書き方
Docker Composeを効果的に活用するためには、Docker Composeファイル(Composeファイル)の正しい書き方を理解することが重要です。ここでは、Docker Composeファイルの基本的な構造と記述方法について詳しく解説します。初めてComposeファイルを書く方でも、ルールを押さえれば簡単に作成できるようになります。実際のファイルを見ながら、どのように記述すれば良いのかを学んでいきましょう。

1.Docker Composeファイルの基本構造
1.1 Docker Composeファイルとは
Docker Composeファイルは、YAML形式で記述されるテキストファイルで、複数のDockerコンテナを一括で定義・管理・実行するための設定を記述します。このファイルを使用することで、複雑なマルチコンテナ環境をシンプルに構築・運用することが可能になります。
1.2 基本構造
Docker Composeファイルの基本的な構造は以下の通りです。
version: "3"
services:
サービス名:
image: イメージ名
ports:
- ホストポート:コンテナポート
restart: 常に再起動
主なセクション
セクション | 説明 |
---|---|
version | 使用するComposeファイルのバージョン |
services | 管理する各コンテナ(サービス)の定義 |
2.Docker Composeファイルの例
2.1 Apacheコンテナの定義ファイル例
以下に、Apacheコンテナ(apache-container
)を作成するためのDocker Composeファイルの例を示します。
version: "3"
services:
apache-container:
image: httpd
ports:
- 8080:80
restart: always
ファイルの解説
項目 | 説明 |
---|---|
version | Composeファイルのバージョンを指定します。 |
services | 管理する各コンテナを定義するセクションです。 |
apache-container | サービス名(任意の名前) |
image | 使用するDockerイメージを指定します。 |
ports | ホストとコンテナのポートをマッピングします。 |
restart | コンテナの再起動ポリシーを設定します。 |
2.2 Docker Composeファイルとdocker runコマンドの比較
以下に、上記のComposeファイルと同等のdocker run
コマンドを比較します。
操作内容 | Docker Composeファイル | docker runコマンド |
---|---|---|
Apacheコンテナの起動 | docker compose up -d | docker run --name apache-container -d -p 8080:80 httpd |
コンテナの再起動ポリシーを設定 | restart: always | --restart always |
比較表
項目 | Docker Composeファイル | docker runコマンド |
---|---|---|
サービス名 | apache-container | --name apache-container |
イメージ | image: httpd | httpd |
ポート設定 | ports: - 8080:80 | -p 8080:80 |
再起動ポリシー | restart: always | --restart always |
実行モード | docker compose up -d | -d (デタッチモード) |
3.Docker Composeファイルの詳細な記述方法
3.1 サービスの追加
複数のコンテナを定義する場合、services
セクション内に複数のサービスを追加します。例えば、MySQLとWordPressを同時に起動する場合のComposeファイルは以下のようになります。
version: "3"
services:
db:
image: mysql:5.7
volumes:
- db_data:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpressuser
MYSQL_PASSWORD: userpass
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_NAME: wordpress
WORDPRESS_DB_USER: wordpressuser
WORDPRESS_DB_PASSWORD: userpass
depends_on:
- db
volumes:
db_data:
サービス間の依存関係
depends_on
を使用することで、WordPressコンテナがMySQLコンテナに依存していることを明示します。これにより、MySQLコンテナが先に起動されるようになります。
3.2 ネットワークとボリュームの定義
Composeファイルでは、ネットワークやボリュームも一緒に定義・管理できます。
セクション | 説明 |
---|---|
networks | カスタムネットワークの設定を行います。 |
volumes | データの永続化に使用するボリュームを定義します。 |
ネットワークの例
networks:
frontend:
backend:
ボリュームの例
volumes:
db_data:
wordpress_data:
4.Docker Composeファイルの書き方のポイント
4.1 インデントと構文
YAML形式で記述されるComposeファイルは、インデントが非常に重要です。正しいインデントを守ることで、ファイルの構文エラーを防ぎます。
4.2 コメントの活用
Composeファイル内でコメントを追加することで、設定内容を説明し、後から見返す際の理解を助けます。
version: "3"
services:
apache-container:
image: httpd
ports:
- 8080:80 # ホストの8080番ポートをコンテナの80番ポートにマッピング
restart: always # 常に再起動する設定
4.3 環境変数の利用
環境変数を使用することで、柔軟な設定が可能になります。例えば、データベースのパスワードなどを環境変数として管理できます。
environment:
MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
5. Docker Composeファイルの確認と実行
5.1 ファイルの確認
Composeファイルが正しく記述されているかを確認するために、以下のコマンドを使用します。
docker compose config
- このコマンドは、Composeファイルの構文チェックを行い、実際に適用される設定内容を表示します。
5.2 コンテナの起動
定義ファイルが正しく記述されていることを確認したら、以下のコマンドでコンテナを起動します。
docker compose config
-d
: デタッチモードでバックグラウンド実行します。
5.3 コンテナの停止と削除
コンテナを停止し、関連するリソースを削除するには以下のコマンドを使用します。
docker compose up -d
- これにより、起動中のコンテナが停止され、ネットワークやボリュームも削除されます(ボリュームはオプションで保持可能です)。
まとめ
ここでは、Docker Composeファイルの書き方について基礎的な知識と具体的な記述方法を解説しました。以下のポイントを押さえておきましょう。
- YAML形式の理解: Docker ComposeファイルはYAML形式で記述されるため、基本的なYAMLの構文を理解することが重要です。
- 基本構造の把握:
version
、services
、networks
、volumes
などの主要セクションの役割を理解する。 - サービスの定義: 各コンテナ(サービス)の設定を適切に記述する。
- 依存関係の管理:
depends_on
を使用して、コンテナ間の依存関係を明確にする。 - ネットワークとボリュームの統合管理: ネットワークやボリュームも一緒に定義・管理することで、より効率的な環境構築が可能になる。
- 実行前の確認:
docker compose config
コマンドを使用して、ファイルの構文や設定内容を確認する。
これらの知識を基に、次章では定義ファイル(Composeファイル)の書式についてさらに詳しく解説し、具体的な設定方法を学びます。引き続き、Dockerの学習を進めていきましょう。