0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WordPressをDocker環境で立ち上げる備忘録

Posted at

🐶 はじめに

こんにちは、mikiです。

前職は理学療法士やフリーランスのニューボーンフォトカメラマンをしていましたが、
2025年1月よりIT業界へ飛び込みました。

現在は、PM・ディレクター・フルスタックエンジニア駆け出しとして、Webサイトやシステム開発に携わっています。

今回は、自分の運営する犬との暮らしブログ 「Moful」 を再構築する中で導入した Docker × WordPress 開発環境 について、
「なぜこの構成にしたのか」「どんな意図で設定したのか」を中心にまとめます🐾

エンジニアとしての成長を加速させるための備忘録でもあります。
拙い点や改善点などありましたら、ぜひコメントで教えてください🐾

📚 目次

🌼 前提

動作環境(推奨)

ツール バージョン
Docker Desktop 4.x 以上
Git 2.40 以上
OS macOS
エディタ Visual Studio Code 推奨

ディレクトリ構成

プロジェクトルートには、設定ファイルと永続化データ用のディレクトリを配置します。

docker-wordpress-template/
├── docker-compose.yml # コンテナ設定
├── php.ini # PHP 設定ファイル
├── .env.sample # 環境変数サンプル
├── .gitignore # 除外設定
├── README.md # 本ドキュメント
└── docker-data/
 └── wordpress/
  └── themes/
   └── your-theme/ # 自作テーマをここに配置


利用できるサービス

サービス名 URL 説明
WordPress http://localhost:8080 メインサイト
phpMyAdmin http://localhost:8081 DB管理ツール
MailHog http://localhost:8025 メール送信テスト
MySQL db:3306 データベースコンテナ

💡 なぜDockerでWordPressを動かすのか

MAMP(またはXAMPP)を使ってローカル開発も視野に入れましたが、テンプレート化や、チーム開発や・番環境への移行時に以下の課題がありました。

  • バージョンの不一致: PHP や MySQL のバージョンが環境(ローカル、本番、メンバーのPC)ごとに異なり、予期せぬエラーが発生する。
  • 環境のブレ: 本番とローカルの環境構成がずれることで、動作が変わる「環境依存バグ」が生まれる。
  • 管理の煩雑さ: MAMPではプロジェクトごとの環境切り替えや依存関係の管理が手間。

そこで、Dockerで環境をコード化して
「どのPCでも同じ開発環境を即再現できる」ようにしました。

⚙️ 設定を分けた理由

Docker Composeを使って、WordPress・MySQL・phpMyAdmin・MailHog の構成を分離しました。

サービス 役割 分離した理由
WordPress PHP実行環境 アプリ本体を独立させ管理しやすくするため
MySQL データベース バージョンアップやデータ永続化を安全に行うため
phpMyAdmin DB管理GUI SQL操作をGUI化して確認しやすくするため
MailHog メール送信テスト 本番メールを誤送信しないため

🔹 ポイント

  • それぞれ独立コンテナ化で影響を最小化
  • depends_on で起動順を制御
  • DBを volumes で永続化

🧩 docker-compose.yml の設計意図

services:
  # データベース(MySQL)
  db:
    image: mysql:latest
    container_name: wordpress_db # 案件毎に適宜変更
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: wordpress # 案件毎に適宜変更
      MYSQL_USER: wordpress_user # 案件毎に適宜変更
      MYSQL_PASSWORD: wordpress_pass # 案件毎に適宜変更
    volumes:
      - db_data:/var/lib/mysql

  # WordPress本体
  wordpress:
    image: wordpress:latest
    container_name: wordpress_app # 案件毎に適宜変更
    depends_on:
      - db
    ports:
      - "8080:80"
    environment:
      WORDPRESS_DB_HOST: db:3306
      WORDPRESS_DB_NAME: wordpress # 案件毎に適宜変更
      WORDPRESS_DB_USER: wordpress_user # 案件毎に適宜変更
      WORDPRESS_DB_PASSWORD: wordpress_pass # 案件毎に適宜変更
      WORDPRESS_DEBUG: 1
    volumes:
      # 1. WordPressコアファイル用の名前付きボリューム
      - wp_data:/var/www/html
      # 2. PHP設定ファイルをマウント(dbから移動)
      - ./php.ini:/usr/local/etc/php/conf.d/php.ini
      # 3. テーマ、プラグイン、アップロードファイルのバインドマウント
      - ./docker-data/wordpress/themes:/var/www/html/wp-content/themes
      - ./docker-data/wordpress/plugins:/var/www/html/wp-content/plugins
      - ./docker-data/wordpress/uploads:/var/www/html/wp-content/uploads

  # phpMyAdmin(ブラウザでDB管理用)
  phpmyadmin:
    image: phpmyadmin/phpmyadmin:latest
    container_name: wordpress_phpmyadmin # 案件毎に適宜変更
    depends_on:
      - db
    ports:
      - "8081:80"
    environment:
      PMA_HOST: db
      MYSQL_ROOT_PASSWORD: root_password

  # MailHog
  mailhog:
    image: mailhog/mailhog
    ports:
      - "1025:1025"
      - "8025:8025"

volumes:
  db_data:
  wp_data:

🎯 WordPressポート設定

ports:  - "8080:80"

→ 理由:
ローカルでLaravelやNext.jsを同時に動かすことを想定し、ポート衝突を避けるために 8080 を採用。

⚙️ php.ini の外部マウント

- ./php.ini:/usr/local/etc/php/conf.d/php.ini

→ 採用理由:
WordPress管理画面のメディアアップロード制限(2MB)を緩和するため。
php.ini に以下を記述👇

upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 512M
max_execution_time = 300
display_errors = On
error_reporting = E_ALL

🎨 テーマフォルダのバインドマウント

- ./docker-data/wordpress/themes:/var/www/html/wp-content/themes

→ 理由:
VSCodeでテーマ開発を行うため、ホスト側でリアルタイム編集を反映。

🧱 phpMyAdmin と MailHog を入れた理由

  • 🧰 phpMyAdmin
    SQLが苦手でも、投稿データやオプション値をGUIで確認・編集できる。
    削除ミスを防ぎ、開発効率を上げられる。
  • 📮 MailHog
    wp_mail() テスト時の誤送信を防止。
    フォーム開発時のデバッグに最適。

💬 最後に

Dockerを導入することによって、どの環境でもブレがなく構築できるようになります。

この記事が、これからWordPressカスタマイズを始める方の参考になれば嬉しいです🐾

GitHubリポジトリ

こちらのREADME.mdに初期セットアップ方法の記載しています。

今回参考にさせていただいた記事(ありがとうございます!):
https://qiita.com/naritomo08/items/226ef6fb1c9368131b20

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?