docker-composeは複数のコンテナをまとめて管理しやすくするためのコマンドツールで、docker-compose.ymlというyaml形式のファイルでコンテナの実行や停止、削除をおこなうことができる。

今回はdocker-composeの簡単な使用例として、WordPress環境を構築する例を紹介する。

docker-compose.ymlの記述

WordPressはWebサーバーとMySQLサーバーにより成り立つので、以下のとおり二つのサービスから成るyamlファイルを作成する。

version: '3'

services:
  wordpress:
    image: wordpress
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_HOST: mysql:3306
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: wp_pass
    depends_on:
      - mysql

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: sample
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: wp_pass

コード解説

version: '3'

まず、上記のコードはバージョン指定で、docker-composeのVersion3の文法に従うことを表す。

services:
  wordpress:
    ...

  mysql:
    ...

次にservicesでは使用するサービスを定義しており、今回はwordpressとmysqlの二つのサービスを定義している。

  wordpress:
    image: wordpress
    ports:
      - 80:80
    environment:
      WORDPRESS_DB_HOST: mysql:3306
      WORDPRESS_DB_USER: wp_user
      WORDPRESS_DB_PASSWORD: wp_pass
    depends_on:
      - mysql

wordpress内の定義では、imageで使用するDockerイメージの指定、portsでDockerホストとコンテナの接続ポート指定、environmentで3つの環境変数を設定している。
depends_onは依存関係の指定で、ここではmysqlに依存していることを表している。

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: sample
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wp_user
      MYSQL_PASSWORD: wp_pass

mysql内では、イメージの指定と環境変数の設定のみをおこなっており、WordPressで使用するDBの設定をおこなっている。

upコマンドでコンテナを起動

docker-compose.ymlの用意ができたら、下記のコマンドを実行する。

docker-compose up -d

-dオプションはdetachモードの略で、バックグラウンドでコンテナを動作させるオプション。

localhostへアクセス

ブラウザでlocalhostへアクセスし、WordPressのインストール画面が表示されればOKだ。