CODE $\Sigma$

2023/01/21
Dockerを使用したWordPressの環境構築

ローカル環境でのWordPressの環境構築の方法はたくさんありますが、今回は、Dockerを利用した環境構築の方法を紹介したいと思います。

このサイトの作成経験をもとにして書いていきます。このサイトのwordpress themeは、howtostudyという名前にしています。

目的は、独自のwordpressのテーマを作るです。

WordPressの環境構築は、このサイトにあるように、Docker composeを利用して構築するのが多いように見受けられます。本サイトでも、この方法を用いて行います。

ただし、すべての方法が実行できるとは限りません。

Source Code

このサイトの全ソースは、以下のGitHubに挙げています。

https://github.com/GodRyosuke/NewRyostudy2

Pre-requests

あらかじめ、このサイトから、Dockerをインストールしておいてください。

  • Docker
  • Visual Studio Code

Let’s Code

docker-compose.yaml

今回使用するimageは次の3つです。

  • wordpress
  • mysql
  • phpmyadmin

私はSQLコマンドに慣れていないので(汗、phpmyadminがないとデータベース操作できないのです…
これらを次に示すdocker-compose.yamlに記入していきます。各イメージに追加してインストールするものがないので、今回はDockerfileは作りません。

version: '3'

services:
  db:
    image: mysql:5.7
    volumes:
      - ../db:/var/lib/mysql
    restart: always
    # expose:
    # - "3306"
    ports: 
     - 3306:3306
    environment:
      - "MYSQL_ROOT_PASSWORD=password"
      - "MYSQL_DATABASE=wordpress"
      - "MYSQL_USER=wordpress"
      - "MYSQL_PASSWORD=wordpress"

  wordpress:
    depends_on:
      - db
    image: wordpress:latest
    ports:
      - "8000:80"
    restart: always
    volumes:
     - ../howtostudy:/var/www/html/wp-content/themes/howtostudy
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: wordpress

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=db #mysqlサービス名を指定
      - PMA_USER=wordpress
      - PMA_PASSWORD=wordpress
    links:
      - db
    ports:
      - 4040:80
    volumes:
      - ../phpmyadmin/sessions:/sessions
volumes:
    db_data:

途中でMYSQL_USERなどが登場しますが、これらは必ずwordpressにしておいてください。テキトーなもので試したりしましたが、私の環境ではうまくdatabaseのconnectionが確立されませんでした。

フォルダの構成は以下のようになっています。

├─.docker
├─db 
├─howtostudy
│  └─assets
│      ├─css
│      ├─img
│      └─js
└─phpmyadmin
    └─sessions

解説

今回は、wordpress, database, phpmyadminの3つのコンテナを動かすので、3つのサービスをそれぞれ定義しています。

databaseの情報などは、ローカルのdbフォルダにvolume mountして、保存しています。

wordpressのテーマを独自に作成することを目的としているので、wordpressを実行するための種々のphpファイルは不要です。そこで、wordpress serviceのvolume mountには、wp-content/themesフォルダ内に直接マウントしています。

databaseは3306ポートに設定されているので、wordpressと通信できるように、wordpress側にWORDPRESS_DB_HOST環境変数を設定しています。

まとめ

本記事では、Dockerを用いたwordpressのlocalでの環境構築を行う方法を解説しました。
巷に出回っているwordpressの環境構築の方法では、データベースとwordpressの2つのみのコンテナとなっている場合が多いので、今回はこれにphpmyadminを追加したものを作成しました。

docker composeを活用して、複数のコンテナを一度に立ち上げて環境を作っています。その際、各コンテナ間の設定において、重要な項目がありました。

Localなどの、インストール一つでwordpressの実行環境を整えられるものもあります。本当に初心者な方はこちらのほうがおすすめかもしれません。