Dockerでwordpressの環境を作成する

2019.3.23 (土)

WordPressの環境はもう年間何回作ってるんだといった感じで、WEBのサービスとしてはかなりメジャーになってしまいました。

$ docker pull wordpress
$ docker pull mariadb

docker-compose.ymlを作成してプロジェクトディレクトリ直下においておく。
記述は以下のようにします。ちょっと解説すると、mysqlのデータベースとWordpressrをつなぐので、DB名とユーザー名とパスワードは同じものを設定します。同じものであれば任意の設定で構いません。

docker-compose.yml

version: '2'

services:
  wordpress:
    image: wordpress:latest
    ports:
      - "3001:80"
    environment:
      WORDPRESS_DB_NAME: wpdb
      WORDPRESS_DB_USER: some_user
      WORDPRESS_DB_PASSWORD: some_password

  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: some_password
      MYSQL_DATABASE: wpdb
      MYSQL_USER: some_user
      MYSQL_PASSWORD: some_password

Dockerを構成&起動します。

$ docker-compose up

これでDockerが立ち上がります。

http://localhost:3001/

WordPressの初期設定画面が出てくるので設定します。プラグインの使用なども問題なくできます。
しかしこれだといろいろとカスタマイズしたりはまだできません。カスタマイズするにはもうちょっと細かい設定が必要です。

テーマのカスタマイズをする

実態ファイルの少ないDockerはリアルな感触が薄いですが、Wordoressのテーマ開発は任意のディレクトリにテーマだけをマウントさせます。(というやり方がいちばんやりやすい)

Docker には起動元 ( docker を実行したホストマシン ) の任意のディレクトリをコンテナ内のディレクトリとしてマウントする機能があります。このマウントされた領域を volume といいます。WordPress のテーマは {WordPress ルート}/wp-content/themes/ ディレクトリ配下に置く決まりですが、Docker コンテナの中に入って直接そこでテーマ開発のためのコーディングをするというのは現実的ではありません。あくまでもコーディングはホストマシン側で行い、その内容を Docker コンテナ内に同期させるのがスマートです。

docker-compose.ymlを以下のように変更します。volumes:でマウント先を指定します。

version: '2'

services:
  wordpress:
    image: wordpress:latest
    ports:
      - "3001:80"
    environment:
      WORDPRESS_DB_NAME: wpdb
      WORDPRESS_DB_USER: some_user
      WORDPRESS_DB_PASSWORD: some_password
    volumes:
      - ./themes/bones:/var/www/html/wp-content/themes/bones
  mysql:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: some_password
      MYSQL_DATABASE: wpdb
      MYSQL_USER: some_user
      MYSQL_PASSWORD: some_password

これでDockerを立ち上げると、./themes/bonesができます。Wordpressの管理画面からもbonesのテーマが追加されています。
マウント先は複数いろいろ指定することができます。

DocumentRootにコンテンツを加える

この理屈でいろいろ加えてゆくことができます。

volumes:
      - ./themes/bones:/var/www/html/wp-content/themes/bones

今更だけどDockerでWordPress環境を用意してみたら超簡単だった
docker-compose を使って WordPress テーマ開発環境を構築しよう