クィックスタート: Compose と WordPress

Docker Compose を使うと、Docker コンテナとして生成される独立した環境内にて WordPress を簡単に実現することができます。 このクイックスタート・ガイドは、Docker Compose を使った WordPress の設定と実行方法を示すものです。 はじめるには Compose のインストール が必要です。

プロジェクトの定義

  1. プロジェクト用の空のディレクトリを生成します。

    ディレクトリ名は覚えやすいものにします。 このディレクトリはアプリケーションイメージのコンテキストディレクトリとなります。 このディレクトリには、イメージをビルドするために必要となるものだけを含めるようにします。

    このプロジェクトディレクトリに docker-compose.yml ファイルを置きます。 このファイルそのものが、WordPress プロジェクトを開始するための内容をすべて含むものとなります。

    注釈

    このファイルの拡張子は .yml.yaml のどちらでも構いません。 いずれであっても動作します。

  2. プロジェクトディレクトリに移動します。

    そのディレクトリをたとえば my_wordpress としていた場合、以下のようになります。

    cd my_wordpress/
    
  3. docker-compose.yml ファイルを生成します。 このファイルが WordPress ブログを起動します。 それとは別に、データ保存のためにボリュームマウントを使った MySQL インスタンスを生成します。

    version: '3'
    
    services:
       db:
         image: mysql:5.7
         volumes:
           - db_data:/var/lib/mysql
         restart: always
         environment:
           MYSQL_ROOT_PASSWORD: somewordpress
           MYSQL_DATABASE: wordpress
           MYSQL_USER: wordpress
           MYSQL_PASSWORD: wordpress
    
       wordpress:
         depends_on:
           - db
         image: wordpress:latest
         ports:
           - "8000:80"
         restart: always
         environment:
           WORDPRESS_DB_HOST: db:3306
           WORDPRESS_DB_USER: wordpress
           WORDPRESS_DB_PASSWORD: wordpress
    volumes:
        db_data:
    

    注釈

    • Docker ボリューム db_data は、WordPress 上から実行されるデータ更新をデータベースに保存します。 詳細は Docker ボリューム を参照してください。
    • WordPress のマルチサイトは、ポート 80443 上においてのみ動作します。

プロジェクトの構築

プロジェクトディレクトリ上にて docker-compose up -d を実行します。

これはデタッチモードにより docker-compose up を実行し、不足する Docker イメージがあれば取得します。 そして WordPress と データベースの両コンテナを起動します。 たとえば以下のようになります。

$ docker-compose up -d
Creating network "my_wordpress_default" with the default driver
Pulling db (mysql:5.7)...
5.7: Pulling from library/mysql
efd26ecc9548: Pull complete
a3ed95caeb02: Pull complete
...
Digest: sha256:34a0aca88e85f2efa5edff1cea77cf5d3147ad93545dbec99cfe705b03c520de
Status: Downloaded newer image for mysql:5.7
Pulling wordpress (wordpress:latest)...
latest: Pulling from library/wordpress
efd26ecc9548: Already exists
a3ed95caeb02: Pull complete
589a9d9a7c64: Pull complete
...
Digest: sha256:ed28506ae44d5def89075fd5c01456610cd6c64006addfe5210b8c675881aff6
Status: Downloaded newer image for wordpress:latest
Creating my_wordpress_db_1
Creating my_wordpress_wordpress_1

注釈

WordPress のマルチサイトは、ポート 80443 上においてのみ動作します。 0.0.0.080443 (あるいは設定したポート) へのバインディングに関するエラーが発生したら、WordPress に割り当てたポートが、すでに別のサービスによって利用されていることが考えられます。

ウェブ・ブラウザ上での WordPress の起動

この時点で WordPress は Docker ホスト上のポート 8000 番を使って稼動しています。 そこで WordPress の管理者となって「よく知られた 5 分でインストール」を行うことができます。

注釈

WordPress サイトはポート 8000 を使って稼動していると述べましたが、即座に利用できるわけではありません。 コンテナは初期化を行っている最中であり、初回の読み込み処理には数分の時間を要するからです。

Docker Machine を利用している場合は、docker-machine ip MACHINE_VM を実行してマシンの IP アドレスを取得できます。 そこでウェブ・ブラウザから http://MACHINE_VM_IP:8000 にアクセスしてください。

Docker Desktop for Mac や Docker Desktop for Windows を利用している場合、IP アドレスとしては http://localhost を利用し、ウェブ・ブラウザから http://localhost:8000 にアクセスしてください。

WordPress 言語選択 WordPress ようこそ画面

シャットダウンとクリーンアップ

docker-compose down コマンドを実行すると、コンテナとデフォルトネットワークが削除されます。 ただし WordPress データベースは残ります。

docker-compose down --volumes コマンドを実行すると、コンテナとデフォルトネットワーク、さらに WordPress データベースも削除します。