概要
Docker Compose を使い、WordPress を実行します。
0. 用語説明とセットアップ
Docker Compose
(コンポーズ)は、複数のコンテナを使うアプリケーションを、定義・実行するツールです。
Docker Compose のセットアップは、root 権限で次のコマンドを実行します。
curl -L https://github.com/docker/compose/releases/download/1.16.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
実行後、バージョン番号が表示されるのを確認します。
$ docker-compose version
docker-compose version 1.13.0, build 1719ceb
docker-py version: 2.2.1
CPython version: 2.7.13
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
1. docker-compose.yml ファイルの準備
Docker Compose は、 docker-compose.yml
という名称の YAML 形式のファイルを通し、サービス(コンテナ)を定義します。どのようなイメージを元に実行するか、どのポートを使うか、あるいは、ボリュームやネットワークを定義できます。
まず、作業用ディレクトリを作成し、移動します。
$ mkdir wordpress
$ cd wordpress
エディタを開き docker-compose.yml
ファイルを作成します。このファイルは「プロジェクトの定義ファイル」とも呼びます。Docker Compose では、デフォルトでディレクトリ名(この例では wordpress
)が該当します(-p
オプションを指定し、ディレクトリ名以外にも変更できます)。
$ vi docker-compose.yml
ファイルの中身は次のようにします。
version: '3.1'
services:
wordpress:
image: wordpress
ports:
- 80:80
environment:
WORDPRESS_DB_PASSWORD: example
mysql:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: example
ここではサービス(services)として wordpress
と mysql
の2つのコンテナを定義しています。
2. 必要なイメージのダウンロード
docker-compose pull
を実行すると、docker-compose.yml
に含まれるサービスが必要なイメージを一括ダウンロードします。
$ docker-compose pull
docker images
コマンドを実行すると、必要なイメージがダウンロードされているのが分かります。
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress latest ca96afcfa242 7 days ago 406MB
mysql 5.7 e799c7f9ae9c 2 weeks ago 407MB
3. WordPress の実行
サービスを実行するには docker-compose up -d
コマンドを実行します。up
は docker-compose.yml
ファイルに記述している全てのサービスを起動し、-d
はデタッチド・モード(バックグラウンドで実行)します。
まず mysql
サービスのみ実行します。
$ docker-compose up -d mysql
Creating network "wordpress_default" with the default driver
Creating wordpress_mysql_1 ...
Creating wordpress_mysql_1 ... done
サービスが稼働しているかどうかは docker-compose ps
コマンドで確認します。
$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------
wordpress_mysql_1 docker-entrypoint.sh mysqld Up 3306/tcp
Up
であれば、正常起動しています。
ログ(標準出力)を docker-compose logs -f
コマンドで確認します。特にエラーがなければ Ctrl-C
を入力して、中断します。
MySQL の起動を確認した後、WordPress コンテナを起動します(WordPressコンテナは、MySQL データベースに接続できないと起動中止してしまうため、あえてこの手順にしています)。
$ docker-compose up -d
wordpress_mysql_1 is up-to-date
Creating wordpress_wordpress_1 ...
Creating wordpress_wordpress_1 ... done
そして、サービスの稼働状況を確認します。
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
wordpress_mysql_1 docker-entrypoint.sh mysqld Up 3306/tcp
wordpress_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
Wordpress
コンテナのログを確認し、正常起動していることを確認します。
$ docker-compose logs -f wordpress
Attaching to wordpress_wordpress_1
(省略)
wordpress_1 | [Thu May 25 04:32:07.734697 2017] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
ブラウザから http://<IPアドレス>/
にアクセスし、WordPress の画面が表示されるのを確認します。
4. WordPress の停止と再起動
停止は docker-compose stop
です。
$ docker-compose stop
Stopping wordpress_wordpress_1 ... done
Stopping wordpress_mysql_1 ... done
$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------
wordpress_mysql_1 docker-entrypoint.sh mysqld Exit 0
wordpress_wordpress_1 docker-entrypoint.sh apach ... Exit 0
再起動するには、実行中であれば docker-compose restart
、今回のように停止中であれば docker-compose start
を実行します。
$ docker-compose start
Starting mysql ... done
Starting wordpress ... done
$ docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------
wordpress_mysql_1 docker-entrypoint.sh mysqld Up 3306/tcp
wordpress_wordpress_1 docker-entrypoint.sh apach ... Up 0.0.0.0:8080->80/tcp
5. WordPress の削除
サービスを削除(使用していたコンテナの削除)は docker-compose rm
または docker-compose down
です。
$ docker-compose down
Stopping wordpress_wordpress_1 ... done
Stopping wordpress_mysql_1 ... done
Removing wordpress_wordpress_1 ... done
Removing wordpress_mysql_1 ... done
Removing network wordpress_default
$ docker-compose ps
Name Command State Ports
------------------------------