概要
Docker Compose を使って、WordPress 5.0 の環境を素早く構築し(所要時間数分)、スムーズな動作確認や検証を行えるようにします。
背景
WordPress の最新版 WordPress 5.0 "Bebo"が2018年12月6日にリリースされました。新しいバージョンがリリースされたため、おそらく様々な企業・団体・個人において、変更箇所の確認や、動作確認、手順書の見直し、検証等が行われているものと予想されます。しかしながら、純粋にWordPressそのものの挙動を確認したい場合、ゼロからサーバを準備し、Apache、PHP、MySQL(mariadb)などをセットアップするのは手間がかかります。
Docker Composeを使えば、コマンド一つ(docker-compose up
)で下図のような環境を自動構築・実行できるようにします。以下は WordPress および MySQL の公式 Docker イメージを使って、環境を構築する手順です。
手順
1. Docker および Docker Compose セットアップ(Linux)
既に持っている場合は省略できます。
以下手順は Linux を想定していますが、macOS および Windows の場合は Docker for Mac および Docker for Windows をセットアップすると、Docker 本体(Docker Engineと docker
CLI )および Docker Oompose( docker-compose
CLI )が自動的にセットアップされています。
Docker のセットアップ
CentOS 7、最近の Debian や Ubuntu、Fedora では以下のコマンドを実行すると Docker Engine CE(Community Edigiton)の最新安定版を自動セットアップします。
$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh ./get-docker.sh
CentOS 7 であれば、次のコマンドも実行しておきます。
# systemctl enable docker && systemctl start docker
systemd の設定で、サーバのブート時に Docker Engine の起動を有効にしつつ、さらに Docker を起動します。
正常に動作しているかどうかは、docker version
コマンドを実行し、 SERVER:
以降が表示されるかどうか確認します。Docker Engineが起動していなければ、バージョンを返せません。以下は正常な例です。
# docker version
Client:
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:48:22 2018
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:19:08 2018
OS/Arch: linux/amd64
Experimental: false
Docker Compose のセットアップ
Docker Compose は docker-compose
という名称の CLI が必要です。これが Docker のコマンドライン・ツールとして Docker Engine と通信し、複数の Docker コンテナやネットワーク、ボリュームを、プロジェクトと呼ばれる単位でまとめて管理できます。
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
動作確認は、バージョン番号が表示されるかどうか確認しておきます。(Composeのバージョンによっては Compose ファイル形式のバージョンが異なり、同じ設定ファイルでも挙動が異なる場合が有り得ます。動作時には一応気に留める必要があります)
# docker-compose version
docker-compose version 1.23.1, build b02f1306
docker-py version: 3.5.0
CPython version: 3.6.7
OpenSSL version: OpenSSL 1.1.0f 25 May 2017
2. プロジェクト用ディレクトリの作成と移動
$ mkdir wp5
$ cd wp5
ここでは wp5
という名前のディレクトリを作成し、移動しました。Docker Compose でプロジェクト(コンテナ、ネットワーク、ボリュームを扱う範囲です)を扱うには、まず何らかのディレクトリを用意します。
3. Composeファイルの設置
ファイル名称 docker-compose.yml
として、以下の Docker Compose 用ファイル(以下 Compose ファイル)を作成します。
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
この例では、ホスト側のポート 8080
に対し、コンテナ内のポート 80
の割り当て(マッピング)をしています。
4. プロジェクトを起動します。
$ docker-compose up -d
5. ブラウザからアクセスします
http://<ip>:8080/
あとは、WordPress を操作可能です。言語の選択→管理画面のパスワード設定へと進みます(データベースに接続するための wp_config.php が自動作成されるため、データベース関連の設定は自動的に省略されています。MySQL のパスワードを確認するには docker-compose logs で GENERATED ROOT PASSWORD:
と表示されている行を探します。これは今回はランダムなパスワードを自動生成するオプションをMySQLコンテナに対して有効にしているからです)。
今回は 8080
を割り当てていますが、ホスト側ではポートの重複はできませんので、もし重複するようであれば別ポートの指定が必要です。以下はホスト側でポート 9000
を使う例です。
ports:
- 9000:80
あるいは、ホスト側のポート 80
が空いていれば、そちらに割り当ても可能です。
ports:
- 80:80
6. 一時的な停止・再開
動いているものを停止するには、次のようにします。
$ docker-compose stop
再開は、つぎのようにします。
$ docker-compose start
7. 削除
$ docker-compose down -v
-v
をつけ、今回の WordPress 用のコンテナ、ネットワーク、ボリュームを削除します。削除したデータは復旧できませんので、必要に応じて事前にバックアップ等をおとりください。
もし -v
を付けて残ったままになれば、docker volume prune
か docker system prune --volume
で、あとから削除もできます。
参考
- library/wordpress - Docker Hub
- library/mysql - Docker Hub