docker composeでWordPressの開発環境を構築-MySQLはローカルへマウント
docker composeでWordPressの開発環境を構築-MySQLはローカルへマウント

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つのフォルダをさらに作成する。

 

  1. mysql
  2. 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/wpcontent」などの「/」を「\」に変える必要があるかもしれない。

 

起動に成功したら、ブラウザにて以下のURLでアクセスするとWordPressの初期設定画面が表示されるだろう。

 

http://localhost:8080

 

起動を確認できたら、停止コマンドによりサーバーを停止することができる。

 

WordPressのテーマを開発したい場合は、「wp-content/themes」の階層にて作業することができる。

 

備忘録

ここからは、個人的なメモと中級者向けの記録となる。

 

データベースのボリュームのマウントは、ローカルではなくdockerボリュームを使用するべきだとは思う。

 

しかし、私の経験上だがPCを入れ替えたり、Dockerを入れ直したり、そもそも別の開発をしていて、ボリュームが間違ってマウントされてしまったりで困ったことがある。

3ヶ月以内に開発した環境と衝突していれば、大体の問題は解決するが、2年前に作成した環境の一部と干渉すると、記憶を思い出すことができず解決が難しくなってしまう。

 

このような2つの環境が動かなくなった経験を踏まえて、あえてdockerボリュームではなくローカルにマウントしている経緯となる。

ローカルにMySQLをマウントさせることで、このフォルダさえあればなんとか復旧する自身があるからだ。

  • .