Docker上で動作するWebアプリケーションを構築するときは、アプリケーションサーバ、Webサーバ、DBサーバなどいくつかのコンテナ同士を連携させて動作させます。この記事では、複数コンテナを使用したWebアプリケーション実行環境の構築方法について説明します。
Docker Composeの概要
Docker上で動作するWebシステムでは、複数のDockerコンテナが協調して動作します。Docker Composeは、複数のコンテナをまとめて管理するためのツールです。
Docker Composeは、「docker-compose.yml」というファイルにコンテナの構成情報を定義することで、同一のホスト上の複数のコンテナを一括管理できます。
Composeの定義ファイルは、Webアプリケーションの依存関係(データベース、Webサーバ、アプリケーションなど)をまとめて設定できます。この定義ファイルをもとにdocker-compose
コマンドを実行すると複数のコンテナをまとめて起動したり停止したりできます。
以下では「Docker Compose」の構成管理ファイルである「docker-compose.yml」の書き方について説明します。
docker-compose.ymlの概要
Docker Composeは、「docker-compose.yml」というCompose定義ファイルに、システム内で稼働する複数のサーバ群の構成をまとめて定義します。
この定義ファイルはYAML形式で書かれています。
Compose定義ファイルには、複数のコンテナの設定内容をまとめて1つのファイルに記述します。このCompose定義ファイルには管理したいコンテナのサービス(services:)/ネットワーク(networks:)/ボリューム(volumes:)を定義します。
以下の例では、webserverというサービスとredisという名前のサービスを作成し、インデントを下げて、それぞれのコンテナの詳細情報を設定しています。
また、Dockerfileと同様に「#」以降はコメントになります。
# バージョンを指定
version: '3'
# サービス定義
services:
webserver:
image: ubuntu
ports:
- "80:80"
networks:
- webnet
redis:
image: redis
networks:
- webnet
# ネットワーク定義
networks:
webnet:
# データボリューム定義
volumes:
data-volume:
この記事では、複数コンテナの構成情報を記述する「docker-compose.yml」ファイルの書き方について説明しました。
次の記事以降ではこれまで説明したことを踏まえて、複数のコンテナを利用して具体的に開発環境を構築していきます。