docker composeでWordPressの開発環境を構築-MySQLはローカルへマウント
なぜコンテナ環境(Docker)で開発するのか?
前置きとして、この記事は技術的に革新的なことは書かず、これからWordPressを勉強したい友人に向けて記述している。
当サイトのようにWordPressのテーマを開発するにあたり、どのような環境で開発するべきか悩むことがある。
一昔前までは、Xamppなどで開発することが多い印象で、サーバーの知識をかじった人物であれば、VM機などで開発していただろう。
ここ数年でコンテナ技術が発達し、多くのサービスがコンテナを使用するようになった。
そこで簡単ながらコンテナ技術について説明してみよう。
コンテナ技術とは、下の画像にあるクジラの四角いコンテナをイメージするとわかりやすい。
サイトを運営するためには、アプリケーションが動くWEBアプリケーション・サーバーと記事情報などを保管するデータベース・サーバーの2つが必要となる。
昔は、1つのサーバーにWEBアプリケーション・サーバーとデータベース・サーバーを導入したり、2つのそれぞれのサーバーに導入することが多かった。
2つのサーバーに分けることで、メンテナンス性が高くなり、実運用でWEBアプリケーションとデータベースを2つのサーバーで稼働させることが容易にできる。
コンテナのいいところは、外部で公開されているWEBアプリケーション・サーバーコンテナとデータベース・サーバーコンテナを2つ用意し、それぞれを組み合わせるだけでWEBアプリケーションに必要な構成がすぐに完成する。
これは、積み木を乗せて城を作る感覚に近い。
っということで、複雑なことはせずに簡単に開発環境がほしいため、コンテナで有名なDockerを使用したWordPressの開発方法をメモすることにした。
開発環境の前にDockerを導入
慣れていない人には面倒くさいかもしれないが、開発環境を作る前の環境作りをしなければならない。
(ご飯を食べるためには、机が必要なのと同じだ。)
Google検索にて「docker windows 10 インストール」なり、「docker macOS インストール」で検索して、その時代に応じたインストール方法を行ったほうがいい。
Windows 10環境のであれば現在だと、以下のリンクよりDockerのインストーラをダウンロードすることができる。
最終的に「コマンドプロンプト」などのコマンドラインソフトで「docker -v」が実行できれば良いと思われる。
以下が、「docker -v」と入力したときの例となる。
docker -v
Docker version 20.10.6, build 370c289
このようにインストールしたDockerのバージョンが20系列だよ!っと表示されれば使用することが可能だ。
DockerコンテナでWordPress環境を作る
まずは、作業するために作業用のフォルダを作成しよう。
作成したフォルダの中で開発をすることとなる。
作業用のフォルダを作成したら、以下の2つのフォルダをさらに作成する。
- mysql
- wp-content
これにより、作業フォルダの中に「mysql」フォルダと「wp-content」フォルダがある状態となる。
ここで一つ解説すると、上の方で説明した「mysql」フォルダがデータベース・サーバーのデータが入り、「wp-content」にはWEBアプリケーション・サーバーつまりWordPressが入ることとなる。
そして同じ階層に「docker-compose.yml」というファイルを作成し、ファイルの中身をこのように記載する。
version: '3.1'
services:
wordpress:
image: wordpress
restart: always
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: db
WORDPRESS_DB_USER: exampleuser
WORDPRESS_DB_PASSWORD: examplepass
WORDPRESS_DB_NAME: exampledb
volumes:
- ./wp-content:/var/www/html/wp-content
db:
image: mysql:5.7
restart: always
environment:
MYSQL_DATABASE: exampledb
MYSQL_USER: exampleuser
MYSQL_PASSWORD: examplepass
MYSQL_RANDOM_ROOT_PASSWORD: '1'
volumes:
- ./mysql:/var/lib/mysql
ここまでで、作業フォルダの中に「mysql」フォルダと「wp-content」フォルダと「docker-compose.yml」フォイルがある状態となる。
「docker-compose.yml」には、DockerにてWordPressを立ち上げるための環境設定が書かれている。
これでWordPressを開発するための環境が整った。
WordPressを起動する
「コマンドプロンプト」などで、作業フォルダに入り、それぞれのコマンドによりサーバーの起動と停止を行うことができる。
- 起動コマンド:docker compose up -d
- 停止コマンド:docker compose stop
起動コマンドである「docker compose up -d」を実行する。
もし起動に失敗した場合、「/var/www/html/wp–content」などの「/」を「\」に変える必要があるかもしれない。
起動に成功したら、ブラウザにて以下のURLでアクセスするとWordPressの初期設定画面が表示されるだろう。
http://localhost:8080
起動を確認できたら、停止コマンドによりサーバーを停止することができる。
WordPressのテーマを開発したい場合は、「wp-content/themes」の階層にて作業することができる。
備忘録
ここからは、個人的なメモと中級者向けの記録となる。
データベースのボリュームのマウントは、ローカルではなくdockerボリュームを使用するべきだとは思う。
しかし、私の経験上だがPCを入れ替えたり、Dockerを入れ直したり、そもそも別の開発をしていて、ボリュームが間違ってマウントされてしまったりで困ったことがある。
3ヶ月以内に開発した環境と衝突していれば、大体の問題は解決するが、2年前に作成した環境の一部と干渉すると、記憶を思い出すことができず解決が難しくなってしまう。
このような2つの環境が動かなくなった経験を踏まえて、あえてdockerボリュームではなくローカルにマウントしている経緯となる。
ローカルにMySQLをマウントさせることで、このフォルダさえあればなんとか復旧する自身があるからだ。