compose.yamlの例

 Docker Composeを使用することで、複数のコンテナを管理するための設定やオプションをYAML形式のファイルにまとめることができます。これにより、Dockerコマンドを使用する際に必要な長いオプションを1つのファイルに記述するだけで済みます。ここでは、Docker Composeのメリットとして、compose.yamlファイルの例を使用して解説します。

例えば、以下のようなcompose.yamlファイルがあるとします。

version: '3.8'

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

このcompose.yamlファイルでは、2つのサービス(webとdb)が定義されています。

  • version フィールドでは、使用するDocker Composeファイルのバージョンを指定します。
  • services フィールドでは、定義するサービスのセクションが開始されます。各サービスは、その名前で定義され、その下にイメージの指定やポートのマッピング、環境変数の設定などが記述されます。
要素説明
version使用する Docker Compose ファイルのバージョンを指定します。ここでは、3.8 を使用しています。
services定義するサービスのセクション。各サービスは独立して定義されます。
webサービスの名前。
image使用する Docker イメージを指定します。ここでは、Nginxの最新バージョンを使用しています。
portsポートのマッピングを定義します。ホストのポート80をコンテナのポート80にマッピングしています。
dbサービスの名前。
image使用する Docker イメージを指定します。ここでは、MySQLの最新バージョンを使用しています。
environmentコンテナ内で使用する環境変数を定義します。ここでは、MySQLのルートパスワードを”example”に設定しています。
compose.yamlファイルの意味

YAMLファイルの拡張子

 まず、YAMLファイルの拡張子について解説します。YAMLファイルは一般的に 「.yml」 または 「.yaml」 の拡張子を持ちます。どちらの拡張子も同じ形式のファイルを表現しますが、「.yaml」 が公式な拡張子とされています。ただし、一般的に 「.yml」 も広く使われており、どちらを使用しても問題ありません。

Apacheコンテナを作成する例

次に、Apacheコンテナを作成する例とその解説を示します。

YAMLファイルの例(compose.yaml)

version: '3.8'

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

このYAMLファイルでは、Apacheコンテナを作成しています。以下にその解説を表で示します。

要素説明
version使用する Docker Compose ファイルのバージョンを指定します。ここでは、3.8 を使用しています。
services定義するサービスのセクション。各サービスは独立して定義されます。
apacheサービスの名前。
image使用する Docker イメージを指定します。ここでは、Apache HTTP Server の最新バージョンを使用しています。
portsポートのマッピングを定義します。ホストのポート80をコンテナのポート80にマッピングしています。
YAMLファイル

 このYAMLファイルでは、Apache HTTP Serverの最新のイメージを使用し、ホストのポート80をコンテナのポート80にマッピングしています。これにより、Apacheコンテナがホストの80番ポートにリクエストを受け付けるようになります。

 このように、YAMLファイルを使用してコンテナの設定を定義することで、複数のコンテナを簡単に作成し、設定することができます。これにより、Docker Composeを使用したコンテナの管理が効率化され、開発やデプロイメントプロセスがスムーズになります。

まとめ

 このようにcompose.yamlファイルを使用することで、複数のコンテナを作成する際に、Dockerコマンドで指定しなければならないオプションをまとめて管理することができます。これにより、作業の効率化や設定の簡略化が図られます。また、YAMLファイルの構造化された形式により、設定の見通しや可読性も向上します。