docker-composeの活用
docker run による起動も、最初の頃はシンプルなものでしたが、前章で扱ったような実践的なコンテナになるとオプションも多く複雑になってきました。
このようなケースで便利なのがdocker-composeというdocker付属のツールになります。
まずはその威力を確認するために、phpコンテナの起動をdocker-compose を用いて行ってみましょう。
docker-compose.yml の作成
docker-compose はdocker-compose.ymlというyamlフォーマットの設定ファイルを利用してコンテナを起動させます。
まずは試してみましょう。
php_sampleフォルダ内にdocker-compose.ymlというファイルを以下の内容で作成します。
docker-compose.yml
version: '3' # 設定ファイルの文法のバージョン3を利用する。
services:
# 1. phpモジュールを搭載したapacheをインストールするコンテナ。
php:
container_name: php
build: . # docker-compose.ymlがあるディレクトリのDockerfileに基づいてコンテナ作成
volumes:
- ./www:/var/www # ホストのwwwlディレクトリをphpコンテナのドキュメントルートと同期。
ports:
- 8080:80 # ホストの8080番ポートをコンテナの80番ポートにフォワード(転送)
今までdocker container run コマンドで指定していた起動オプションについて
- --name: container_name
- -v: volumes
- -p: ports
- 引数(Dockerfileのあるディレクトリ): build
という形式で、対応関係ができていることがわかります。
このdocker-compose.ymlを用いてコンテナを立ち上げます。
docker-compose up
上記のコマンドを実行すると、自動的に
- コンテナ名: php
- マウントするボリューム: 現在のディレクトリ内のwwwディレクトリをコンテナ内の/var/wwwにマウント
- ポートフォワード: localhost:8080をコンテナ内の80ポートに
- Dockerfileの指定: 現在のディレクトリ
という設定でコンテナが立ち上がります。
docker-composeの意義
まずは、PHPコンテナの起動を通じてdocker-composeを体験していただきました。
docker-composeは
- 起動オプションを設定ファイルとして保存できる
- 複数のコンテナの起動設定を用意しておくことで、まとめてコンテナを立ち上げられる
といったメリットがあるため、特にDBサーバとの連携やphpmyadminとの連携などを図りたいLAMP環境の構築では大活躍します。
以下の項で、docker-compose.ymlの設定項目について詳しくみていきましょう。