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

読む時間の目安: 2 分

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.9"
    
    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
        volumes:
          - wordpress_data:/var/www/html
        ports:
          - "8000:80"
        restart: always
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: wordpress
          WORDPRESS_DB_PASSWORD: wordpress
          WORDPRESS_DB_NAME: wordpress
    volumes:
      db_data: {}
      wordpress_data: {}
    

メモ

  • Docker ボリュームdb_datawordpress_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 Desktop for Mac や Docker Desktop for Windows を利用している場合、IP アドレスとしてはhttp://localhostを利用し、ウェブブラウザーからhttp://localhost:8000にアクセスしてください。

WordPress インストール時の言語選択

WordPress へようこそ

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

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

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

その他の Compose ドキュメント

documentation, docs, docker, compose, orchestration, containers