【WordPress×Docker】開発環境構築手順を解説

Docker WordPress 環境構築

【WordPress×Docker】開発環境構築手順を解説

※本記事は広告が含まれる場合があります。

なやむくん
WordPressの開発環境をDockerで構築したい…。
なやむさん
とりあえずWordPressの開発環境のローカルサーバーを立ち上げたい…。

などの疑問や悩みを解決してまいります。

WordPressの開発環境の構築において、localwp-envを使用したり様々な方法があります。

wp-envを使った開発環境の構築については以下の記事を参考にしてみてください。

参考記事
【WordPress】wp-envを使ってローカル開発環境を構築する方法
【WordPress】wp-envを使ってローカル開発環境を構築する方法

続きを見る

今回は、Dockerを使用してWordPressの開発環境を簡単に構築する手順を解説します。

前提条件

WSL2下で開発環境を構築するために以下の前提条件が必要です。

  • WSL2 が有効化されていること
  • Ubuntu などのWSL2ディストリビューションがインストールされていること
  • Dockerがインストールされていること

完成例

最初に各ファイルの内容とディレクトリ構成を紹介します。

みつた
とりあえず環境構築をされたい方におすすめです!

ディレクトリ構成

├── docker
│   ├── mysql
│   │   └── Dockerfile
│   └── wordpress
│       └── Dockerfile
├── docker-compose.yml
└── wordpress // WordPressのディレクトリが格納

docker-compose.yml

version: "3.7"
services:
  mysql:
    container_name: mysql_local
    build:
      context: ./docker/mysql
    restart: always
    ports:
      - "3310:3306"
    environment:
      MYSQL_DATABASE: wordpress_db
      MYSQL_ROOT_PASSWORD: password
      MYSQL_USER: wordpress_db_user
      MYSQL_PASSWORD: password

  wordpress:
    container_name: wordpress_local
    build:
      context: ./docker/wordpress
    restart: always
    depends_on:
      - mysql
    ports:
      - 10081:80
    environment:
      WORDPRESS_DB_HOST: mysql_local:3306
      WORDPRESS_DB_USER: wordpress_db_user
      WORDPRESS_DB_PASSWORD: password
      WORDPRESS_DB_NAME: wordpress_db
      WORDPRESS_DEBUG: 1 # WordPressのデバッグモードを有効化
    volumes:
      - ./wordpress:/var/www/html

/docker/mysql/Dockerfile

FROM mysql:8.0 // ※バージョンは要件に合わせ変更してください

/docker/wordpress/Dockerfile

FROM wordpress:latest // ※バージョンは要件に合わせ変更してください

Docker起動

docker-compose up -d // docker-composeの起動

// 実行結果
Starting mysql_local ... done
Starting wordpress_local ... done

http://localhost:10081/ にアクセスしましょう。以下のように使用言語を選択する画面に遷移しますので「日本語」を選択してください。

WordPress初期設定:言語選択

次に必要情報を入力していきます。

WordPress初期設定:必要情報入力

設定後は以下の画面に遷移したら構築完了となります。

WordPress初期設定:完了画面

この後はログイン画面に遷移して、設定したログイン情報で管理画面にアクセスができるかどうか確認してください。

コード解説

それでは、開発環境構築に至るまでの手順について解説していきます。

みつた
Dockerが不慣れな方にも分かりやすく解説していきます!

ディレクトリの用意

まずは最初に説明したディレクトリ構成を作成します。

├── docker
│   ├── mysql
│   │   └── Dockerfile
│   └── wordpress
│       └── Dockerfile
├── docker-compose.yml
└── wordpress

docker-compose.ymlを作成

docker-compose.ymlを作成していきます。

docker-compose.ymlとは

Docker Compose を使用して複数のDockerコンテナを管理・構成するための設定ファイルです。主に複数のコンテナの定義、ネットワーク設定、ボリュームの設定、環境変数の管理などを記述します。

今回は以下のように記述しています。

version: "3.7" # Docker Composeのバージョン指定

services:
  mysql: # MySQLサービスの定義
    container_name: mysql_local # コンテナ名を "mysql_local" に指定
    build:
      context: ./docker/mysql # MySQLのDockerイメージをビルドするディレクトリの指定
    restart: always # コンテナが停止しても自動的に再起動する
    ports:
      - "3310:3306" # ホストのポート3310をコンテナのMySQLポート3306にマッピング
    environment:
      MYSQL_DATABASE: wordpress_db # 作成するデータベース名
      MYSQL_ROOT_PASSWORD: password # rootユーザーのパスワード
      MYSQL_USER: wordpress_db_user # 新しく作成するMySQLユーザー
      MYSQL_PASSWORD: password # 作成したMySQLユーザーのパスワード

  wordpress: # WordPressサービスの定義
    container_name: wordpress_local # コンテナ名を "wordpress_local" に指定
    build:
      context: ./docker/wordpress # WordPressのDockerイメージをビルドするディレクトリの指定
    restart: always # コンテナが停止しても自動的に再起動する
    depends_on:
      - mysql # MySQLコンテナが起動してからこのコンテナを起動する
    ports:
      - "10081:80" # ホストのポート10081をコンテナのWebサーバーのポート80にマッピング
    environment:
      WORDPRESS_DB_HOST: mysql_local:3306 # WordPressが接続するMySQLのホスト名とポート
      WORDPRESS_DB_USER: wordpress_db_user # MySQLのユーザー名
      WORDPRESS_DB_PASSWORD: password # MySQLのパスワード
      WORDPRESS_DB_NAME: wordpress_db # 使用するデータベース名
      WORDPRESS_DEBUG: 1 # WordPressのデバッグモードを有効化
    volumes:
      - ./wordpress:/var/www/html # ホストの "wordpress" ディレクトリをコンテナ内の "/var/www/html" にマウント

version

まずversionオプションでDocker Composeのバージョンを指定します。(今回は3.7を指定)

services

次に作成するコンテナを指定し、その内容を記述していきます。今回はMySQLとWordPressのコンテナを作成するので、servicesの中にそれぞれmysqlwordpressのコンテナを定義しています。

container_name

container_nameオプションは、作成したコンテナに名前を指定することができます。今回はmysqlコンテナにはmysql_local、wordpressコンテナにはwordpress_localという名前を指定しています。

build.context

build.contextには、そのコンテナのベースとなるイメージや設定が記述してあるDockerfileを指定します。image: mysql:8.0のように直接イメージを記述する方法もありますが、今回はdockerディレクトリを別途用意し、そこに各コンテナのイメージを記述したDockerfileを格納する形にしています。

restart

restartオプションは、Dockerが停止した後の再起動ポリシーを設定します。alwaysと指定するとDocker デーモンが再起動時にもコンテナを自動で再起動するようになります。(デフォルトでは、noの指定になっているため自動再起動されません。)

ports

portsオプションでは、Dockerコンテナのポートとホストのポートの紐づけを行います。今回は、ホスト側で3310番ポートにアクセスすると、コンテナ内の3306番ポート(MySQLデフォルト)に転送され、ホスト側で10081番ポートにアクセスするとコンテナ内の80番ポートに転送されるように設定しています。

depends_on

depends_onオプションを定義されているサービスは、depends_onオプションに指定したサービスが定義されているサービスよりも先に起動することを保証します。今回であれば、wordpressサービスはmysqlサービスで定義しているデータベースを参照し利用するため、wordpressサービスよりも先にmysqlサービスが起動されるように起動順序の指定を行っています。

environment

environmentオプションは、コンテナ内で環境変数を設定することができます。今回でいうとMySQLでは、データベース名、ユーザー名、パスワードなどの初期設定を行い、WordPressでは、MySQLサーバーとの接続設定(ホスト名、ユーザー名、パスワード、データベース名)を行っています。

volumes

volumesオプションは、コンテナとホスト間でファイルやディレクトリを共有するために使用されます。これにより、コンテナ内で変更された内容がホストにも反映されます。逆も同様です。そのため開発中のコードやデータベースファイル、設定ファイルなどをコンテナ内と外で簡単に共有することができます。

ここまでがdocker-compose.ymlに記載されている内容の説明です。

Dockerfileを作成

次にDockerfileを作成します。

Dockerfileとは

Dockerイメージを作成するための設定ファイルです。ベースとなる アプリケーションのインストール、環境変数の設定、実行するコマンド などを定義します。

今回必要なDockerfileは、mysqlコンテナwordpressコンテナの2つです。

docker/mysql/Dockerfileの内容は以下になります。

FROM mysql:8.0

FROMは、ベースとなるイメージを指定するための命令です。mysqlコンテナのMySQLのバージョンを8.0をコンテナイメージとするためこのような記述をしています。

docker/wordpress/Dockerfileの内容は以下になります。

FROM wordpress:latest

wordpressコンテナのイメージはWordPressの最新バージョンを指定しています。

みつた
今回はベースイメージの指定だけの記述ですが、他にもコンテナビルド中に処理を実行させるRUNや環境変数を設定するENVなどの命令文が存在します。

まとめ

ここまで読んでいただきありがとうございました。

今回はDockerを利用してWordPressの開発環境構築を行いました。

冒頭でも説明したように、サーバーを立ち上げただけなので開発環境として内容は不十分かと思いますが、「とりあえずサーバーを立ち上げたい」という方へぜひ参考にしていただけたらと思います。

もちろんより開発環境を充実させることは当然可能なので、ぜひプロジェクトに合わせたWordPress開発環境を整えてみてください!

-Docker, WordPress, 環境構築