LoginSignup
3
3

More than 5 years have passed since last update.

WordPress 5.0+PHP7.2+MySQL5.7の動作環境Docker Composeで雑に試すには

Last updated at Posted at 2018-12-10

概要

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 イメージを使って、環境を構築する手順です。

compose-fix.png

手順

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 prunedocker system prune --volume で、あとから削除もできます。

参考

3
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3