本記事にはアフィリエイトリンクを含みます。Amazonのアソシエイトとして収益を得る場合があります。

WordPressプラグイン開発記 vol.1 – DockerでWordPressローカル環境を構築する

WordPressのアイキャッチ WordPress
WordPress

このブログはWordPressで構成していますが、運用しているとやっぱりあんなことしたい、こんなことしたいが出てきます。公開されているプラグインで事足る場合もありますが、自分がやりたいことと少し違うんだなー・・・がぼちぼちあったりします。

ということで、いろいろやりたいことをまとめた自分用プラグインを作ってみることにしました。PHPはともかくWordPressのカスタマイスはどどどどど素人なので不安しかありませんが

なぜプラグイン?

特に理由はありません!

いえ、ちょっとだけあります・・・DBにデータ保存する必要があるのですが、テーブルの作成・削除はプラグインの有効化・無効化・アンインストールのタイミングに合わせて管理できたほうがすっきりするかなというくらいの判断です。どうせ実装するなら最初からプラグイン形式でやってみようという感じです。

PCにWordPressのローカル環境を準備する

こうなると開発環境が必要になりますね。簡単に構築する方法としてLocalWPを使う方法もあるようですが、どうやらDocker HubにWordPressの公式イメージがあるようなので今回はDockerで構築したいと思います。

Docker本体の準備

Dockerを利用するにはPCにDocker Desktopが必要です。筆者のPCには下記の記事でやった時にすでにインストールしているのでココはskipしちゃいます。

docker-compose.yamlを準備する

記事作成時点でこのWordPressが動いている環境と合わせて以下のバージョンで準備します。PhpMyAdminはDBが見れればいいので最新版を使うことにします。

  • WordPress 6.9.4
  • PHP 8.5
  • MySQL(MariaDB 10.5)
  • PhpMyAdmin 最新版

PC上にプロジェクトを作成するフォルダーの場所を決めて、そこにdocker-compose.yamlというファイルを作成します。今回はD:\wordpressにフォルダーを準備しました。このファイルに下記を記載していきます。

以降「コンテナ」という言葉が出てきますが、PC内に別の独立したマシンを立ち上げるようなイメージで読んでもらえると分かりやすいと思います。

共通の記載

まずファイル全体の骨格となる部分から書いていきます。

docker-compose.yaml
  • services:
    これから動かすコンテナ(サービス)達を定義するよ、という宣言です。
    docker-compose.yamlの先頭に必要な記載だという風に思ってもらっていいと思います。
  • networks:
      wp-network:
        driver: bridge
    wp-networkという名前でコンテナ間で通信できるようにする一般的な「ブリッジ」という形式のネットワークを作成します。
  • volumes:
      db_data:

    共通というよりどちらかといえばMySQL(MariaDB)の設定に近いですが、コンテナの外側にある記載なのでここにまとめました。
    db_dataという名前でDockerが管理する領域にデータを保管するように指定しています。いわゆるデータ永続化です。

Webサーバー + PHP + WordPress

Docker Hub公式のWordPressイメージを指定してWordPressのコンテナを作成する記載です。これによってApach + PHP + WordPressが1つのコンテナ内に構成されます。

docker-compose.yaml – # WordPressコンテナの記載
  • wordpress:
    サービス名です。自由に命名して大丈夫です。
  • image:
    Docker Hub公式のWordPressイメージのタグページでインストールしたい構成、バージョンを探します。
    そこにあるdocker pull wordpress:********docker pull以降を指定します。
  • container_name:
    コンテナ名です。自由に命名して大丈夫です。指定しないと自動で名前がつきます。
  • depends_on:
    dbサービスが先に起動してからwordpressのサービスを起動するようにします。
  • ports:
    80:80“でPC側の80番ポートにアクセスするとコンテナの80番ポートに繋がるようにします。
  • restart:
    alwaysでPCの再起動時やエラー停止時に自動でコンテナを再起動するようになります。
  • environment:
    DBに接続するための設定です。
    WORDPRESS_DB_HOSTには後ほど設定するMySQL側のサービス名:MySQL側のポート番号を指定します。
    【DBユーザー名】、【DBパスワード】、【DB名】についてもMySQL側で設定した値を指定してください。
  • volumes:
    ./wordpress_files:/var/www/html自分のPCのカレントディレクトリにあるwordpress_filesフォルダコンテナ内のWordPress本体と同期させます。
  • networks:
    共通の記載のnetworksで設定したネットワークに参加します。コンテナ(ここではWordPressとMySQL(MariaDB)とphpMyAdmin)は別マシンみたいな形になりますが、すべてに同じネットワークを指定することで簡単にコンテナ間でやり取りできるようになるのがDockerの便利なところですね!

volumesのコンテナ内パス(/var/www/html)は公式イメージの仕様に依存するため変更しないほうが無難です。PC側のフォルダー名は自由に変更できます。

MySQL(MariaDB)

Docker Hub公式のMariaDBイメージを使います。WordPressが実際にデータを読み書きするDBのコンテナです。

docker-compose.yaml – # MySQL(MariaDB)コンテナの記載
  • db:
    サービス名です。他のコンテナからこの名前でアクセスできます。
  • image:
    MariaDBのバージョン10.5の公式イメージを使用します。
  • container_name:
    コンテナ名を指定します。指定しない場合自動で名前がつきます。
  • restart:
    alwaysでPCの再起動時やエラー停止時に自動でコンテナを再起動するようになります。
  • environment:
    コンテナ内の環境変数(設定値)です。
    • MARIADB_ROOT_PASSWORD: 管理者(root)のパスワード。
    • MARIADB_DATABASE: 初回起動時に作成されるデータベース名。
    • MARIADB_USER: WordPressが利用する一般ユーザー名。
    • MARIADB_PASSWORD: WordPressが利用する一般ユーザーのパスワード。
  • volumes:
    db_data:/var/lib/mysqlコンテナ内のDBデータDockerが管理する領域(コンテナの外側)に保存するようにします。
  • networks:
    wordpressのサービスと同じネットワークを設定します。

volumesを設定しないとコンテナ削除時にDBのデータも一緒に消えてしまいます。必ず設定しておきましょう。

phpMyAdmin

Docker Hub公式のphpMyAdminイメージを指定してphpMyAdminのコンテナを作成する記載です。

docker-compose.yaml – # phpMyAdminコンテナの記載
  • phpmyadmin:
    サービス名です。
  • image:
    実行時点で最新のphpMyAdminを使用する指定です。
  • container_name:
    コンテナ名を指定します。指定しない場合自動で名前がつきます。
  • ports:
    “8080:80″でブラウザでlocalhost:8080にアクセス可能となります。
  • environment:
    • PMA_HOST: Mysql(MariaDB)のサービス名のdbを指定します。
    • PMA_PORT: 同上のポート番号を指定します。
  • depends_on:
    dbサービスが先に起動してからwordpressのサービスを起動するようにします。
  • networks:
    wordpressのサービスと同じネットワークを設定します。

dockerのコマンドを実行してコンテナを起動する

docker-compose.yamlを分割して説明していたので、ひとまずフルバージョンを載せておきます。【】 部分をご自身の設定値に置き換えてそのまま使えます。

docker-compose.yaml – フルバージョン

PowerShellまたはコマンドプロンプトでdocker-compose.yamlがあるフォルダー(今回はD:\wordpress)に移動して以下のコマンドを実行します。

コマンド
コマンド – 実行結果

これで下記でアクセスするとローカルで動作する環境にアクセス可能です。

  • http://localhost/ → WordPress
  • http://localhost:8080/ → phpMyAdmin

初回アクセス時はWordPressのインストール画面が表示されます。言語やサイト名・管理者アカウントを設定すればローカルのWordPressが使える状態になりますよ。

次回のvol.2では実際にプラグインのひな形を作る予定です!

当ブログの内容はできる限り正確な情報を提供するよう努めていますが、利用にあたっては自己責任でお願いいたします。
掲載内容に基づく操作・設定などによって生じたトラブルや損害について、当サイトは一切の責任を負いません。
タイトルとURLをコピーしました