🐳

【composeの理解も深める】DockerコンテナでWordPress環境を作成する

に公開

自分のPCを汚さないWordPress開発環境欲しくないですか?

WordPressをDockerコンテナで起動させればポータブルで自分の環境も汚さない開発環境を作ることができます。
Docker HubのWordPress公式イメージを活用してWordPress環境を作る方法をまとめました。
今回はDocker Composeを使った例となりますが、あえてComposeを使わずに構築する方法はまた別の機会に紹介したいと思います。

この記事の意義

WordPressのイメージを使って起動する方法自体は書いてある記事はあるものの考え方まで詳しく書いていないものもありました。そこでみなさんの今後の業務での再現性にお役に立てればと思い、詳しく解説してみることにしました。
(環境の前提)
・WindowsOS,Docker Desktopをインストールできていること
※Linux,MACの方もディレクトリ部分のみOSに従って記載いただければ問題なく構築できます。

WordPress環境をDockerで作るためのポイント

① コンテナ構成:アプリケーション+データベース

  • WordPress(AP)コンテナMySQL(DB)コンテナの2つを使用
    ※WordPressの公式イメージにはデータベースが含まれていないため、MySQLを別コンテナとして用意する必要があります
  • 起動順は一般的なAP,DBの構成の通り、DB→APの順で起動します

② ネットワーク連携:コンテナ間通信の確保

  • 両コンテナを同一のDockerネットワークに所属させることで、WordPressからMySQLへの接続が可能になります

③ ポート設定:ローカルアクセスの確保

  • ローカルPCからWordPressにアクセスするために、ホスト側のポートとコンテナ側のポートをマッピングします
    例:localhost:8080 → コンテナ内の80番ポート

④ 開発効率:ローカル編集の仕組み

  • WordPressのテーマやプラグインなどのPHPファイルをローカルで直接編集できるように、ホストPCのフォルダをコンテナにマウントします

WordPress環境の構築

それではWordPress環境を構築していきます。
今回は可読性もあり、スピーディに構築ができるDocker Composeを使って構築していきます。

Composeファイルを作成

  1. 作業フォルダを作成(Windowsの場合の書き方です)
    (例)C:\docker_wordpress
  2. マウント用フォルダを作成
    (例)C:\docker_wordpress\wordpress
  3. composeファイル(docker-compose.yml)を作成
    (例)C:\docker_wordpress\docker-compose.yml
  4. composeファイル(docker-compose.yml)を編集
version: '3.9'  # Composeファイルのバージョン指定(Dockerのバージョンに応じて調整可能)

services:
  wordpress:
    image: wordpress:latest  # 最新のWordPress公式イメージを使用
    container_name: wp_app   # コンテナ名を指定(任意)
    ports:
      - "8090:80"            # ホストの8090番ポート → コンテナの80番ポート(ブラウザアクセス用)
    volumes:
      - ./wordpress:/var/www/html/wp-content  # ローカルのwp-contentフォルダをマウント(テーマやプラグイン編集用)
    depends_on:
      - db  # dbサービス(MySQL)が先に起動するように指定
    networks:
      - wp_net  # 共通ネットワークに所属

  db:
    image: mysql:8.4  # MySQLは他バージョンでも可
    container_name: db
    environment:
      MYSQL_ROOT_PASSWORD: example  # rootユーザーのパスワード(セキュリティ上は.envで管理推奨)
      MYSQL_DATABASE: wp_db         # 初期作成するWP用データベース名
      MYSQL_USER: exampleuser       # 初期作成するWP用ユーザ名
      MYSQL_PASSWORD: examplepass   # 初期作成するWP用パスワード
    volumes:
      - db_data:/var/lib/mysql  # DBデータの永続化(ホスト側に保存)
    networks:
      - wp_net

volumes:
  db_data:  # MySQL用の永続ボリューム定義

networks:
  wp_net:   # WordPressとMySQLが通信するための仮想ネットワーク


Composeファイルのポイント

WordPressコンテナ

ports:ローカルのPCからのポート転送
volumes:ローカルのwordPressフォルダをマウント
depends_on:dbサービス(MySQL)が先に起動するように指定
networks:DBと共通ネットワークに所属
環境変数で簡易的にセットアップできますが、DBとの関連性の理解を深まるよう、環境変数は未指定にしています

DBコンテナ

container_name: WordPressコンテナから通信する際にコンテナ名でIPアドレスを解決するため固定で設定
environment:コンテナ作成時にWP用のDBやユーザ名を指定し、DBをあらかじめ作成します(WPセットアップ時に入力するパラメータ)。
networks:DBと共通ネットワークに所属

ごちゃっとしてしまいましたが、ここからまた後続の手順に進みます

  1. CMDを立ち上げ
  2. 実行フォルダに移動
cd C:\docker_wordpress
  1. ビルドを実行(プロンプトを占有させないためにdオプションを付与)
docker compose up -d
  1. プロセスの確認(二つのコンテナが起動できていることを確認)
C:\docker_wordpress>docker ps
CONTAINER ID   IMAGE              COMMAND                   CREATED              STATUS              PORTS                                     NAMES
47a91da0ef69   wordpress:latest   "docker-entrypoint.s…"   About a minute ago   Up About a minute   0.0.0.0:8090->80/tcp, [::]:8090->80/tcp   wp_app
5638b8eaa5b9   mysql:8.4          "docker-entrypoint.s…"   About a minute ago   Up About a minute   3306/tcp, 33060/tcp                       db

C:\docker_wordpress>
  1. WordPressのセットアップ画面をブラウザで開く
    localhost:8090
  2. 言語を「日本語」にして、「次へ」をクリック
  3. 「さあ、始めましょう!」をクリック
  4. DBの情報を入力
  • データベース名:MYSQL_DATABASEで設定した値(wp_db)
  • ユーザー名:MYSQL_USERで設定した値(exampleuser)
  • パスワード:MYSQL_PASSWORD(examplepass)
  • データベースのホスト名:container_nameで設定した値(db)
  • テーブル接頭辞:任意
  1. 「インストール実行」をクリック
  2. 必要な情報(任意の値)を入力し「WordPressをインストール」をクリック
  3. インストール成功です。「ログイン」してあとはお好きにお使いください!

WordPress環境の停止

  • コンテナの停止
docker compose stop
  • コンテナの削除
docker compose down
  • DBの論理ボリュームも削除して停止・削除
docker compose donw -v
  • ローカルのマウント情報をクリア
    自身のローカルのフォルダを削除ください。

Dockerを体系的に学びたい方(Udemyで講座を公開中)

Dockerの入門の講座をUdemyで公開しました。
記事よりも細かく説明を聞きたい方、体系的に一通り学びたい方向けに3時間程度の講義で入門レベルをギュッとまとめています。
Dockerの起動方法やDockerfileの作り方、Docker Composeの実行方法など一通り詰まっています。
ハンズオンで手を動かしてしっかり学べるように構成しています。
とりあえず一回触ってみたい方、これから現場にDockerの導入を検討の方はぜひ!

https://www.udemy.com/course/dockerwindowspc/?referralCode=6EDF0B9CB44057ACC299

Discussion