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の設定項目について詳しくみていきましょう。

results matching ""

    No results matching ""