FREENANCE Ad

簡単便利!DockerでWordPressの開発環境を作ろう。方法&メリット紹介

docker WordPress
FREENANCE Ad
ENGINEER

WordPressは、初心者でも簡単にWebサイト運営ができることで人気のCMSです。

しかし便利な一方で、ダッシュボードで促されたとおりに本体やプラグインのバージョンアップを行うと不具合が起こる可能性があり、「テストをせずに実装してしまい問題が起こってしまった」という話をよく聞きます。

不具合を防止し、安全にバージョンアップやカスタマイズを行うには、本番環境ではなく一度ローカル開発環境で実装してみることが望ましいです

そこで今回は、ローカル開発環境を構築できる『Docker』というソフトウェアについてご紹介します。

  • DockerでWordpressのローカル開発環境を作る方法は?
  • ローカル環境を作るなら別の方法もあるけれど、Dockerを使うメリットってなに?

と疑問に感じている方は、ぜひこの記事を参考にしてみてください。

Dockerとは?

Docker

Docker』は、アメリカのDocker社が開発したプラットフォームで、コンテナ型の仮想環境の作成/配布/実行が行えます。

平たく言えば、アプリケーションの実行環境を作成し、管理するためのソフトウェアです。

Dockerを使うと、これまで面倒だったローカル開発環境の構築を素早く済ませることができ、実際の開発作業への移行がスムーズに行えます。

また他のプラットフォームに比べて、その軽量さも魅力のひとつです。メモリの割り当てが少ないため、プログラミング向けのハイスペックPCでなくとも、ある程度サクサクと作業を行えます。

Dockerでは今回ご紹介するWordpress以外にも、さまざまな言語やフレームワークの開発環境を整えられるため、多くの案件で利用できるでしょう。

Dockerのアカウントを作成する必要がありますが、基本無料で利用できます。

Dockerを利用するメリット&デメリット

Dockerを使う理由

ローカル開発環境を構築するためのソフトウェアは、Docker以外にも、VegrantやXAMPPなどさまざまなものが用意されています。

多くの開発者が慣れ親しんだ歴史のあるソフトウェアではなく、新参のDockerを使用するメリット/デメリットはどのようなものがあるのでしょうか。以下で解説していきます。

メリット

メリット1. チーム全員が瞬時に同じ環境を作れる

ローカル開発環境を構築するときに「Aさんの環境ではできたのに、Bさんの環境ではできない」という問題に直面したことはありませんか?

たとえばXAMPPで開発を行っている場合、インストールするXAMPPバージョンをチーム全員で統一しないと「この構文は、このバージョンでは推奨されていない」というエラーが大量に出てしまうことも。

Dockerでは、テキストファイルをベースに言語やデータベースのバージョンを設定していきます。そのため、チームでひとつのテキストファイルを使うようにすれば、全員が同じ条件の環境を作れるのです。

誰かがテキストファイルを一度作成してしまえば、その後は開発環境の構築でつまづくことがありません。実際の開発作業への移行がスムーズに行えますし、XAMPPのように案件に合わせて環境をリセットする手間も省けます

基本の手順さえ覚えてしまえば、いつでも、誰でも同じ開発環境を整えられることがDockerの魅力のひとつです。

メリット2. アップデート時の不具合をコマンドひとつで防げる

WordPress本体やプラグインのアップデートを行うと、予期せぬ不具合が生じることがあります。

そんなときDockerでローカル開発環境を用意しておけば、未然に不具合を防ぐことが可能です。

Dockerを使えば、コマンドひとつで本番と同様の環境を立ち上げ、実際にアップデートした状態を確認できます。環境準備に手間取ることなくアップデートの検証を行えるため、素早い対応が求められる案件にもぴったりです。

また、ローカル開発環境でのテストは本番環境には一切影響がないため、万が一アップデートで不具合が発生しても実際のWebサイトに影響はありません

メリット3. 軽くサクサク動作する

これまでローカル開発環境を作る場面では、VagrantとVirtualBoxというソフトウェアを使う方法が広く採用されていました。

VitrualBoxはホスト型仮想化という、コンテナ型仮想化のDockerとは異なる技術が採用されています。

ホスト型仮想化は、ホストOS(WindowsなどPCのOS)に仮想化ソフトを実行させた上で、ゲストOS(Linuxなど)を起動し、各プロセスを実行しています。仮想マシンをエミュレーションするため、オーバーヘッドが大きくなってしまうことが難点です。

対してDockerは、ホストOS上に各プロセスを立ち上げていきます。ゲストOSがない分、CPUやメモリ、ストレージ消費などのリソース面で、ホスト型仮想化のソフトウェアよりも優位です。またオーバーヘットも少ないため、起動や停止の動作もサクサクと行えます。

Vagrantを利用した開発を快適に行う場合のメモリは16GBが理想ですが、Dockerならメモリ8GBのPCでもストレスなく快適に作業可能です。

ローカル開発環境を稼働させている状態でも、処理の遅延を気にせずに開発作業を進めたい方はぜひDockerを利用してみてください。

メリット4. 本番実装までをシームレスに行える

Dockerは、ローカル開発環境を作る場面にだけでなく、クラウド環境の構築を行うときにも使用できます。

人気のクラウドコンピューティングサービスであるAWSはDockerに対応しているため、AWS上にローカル開発環境と同じ環境を構築することが可能です。

ローカルと本番が同じ環境であれば、ローカルで開発したコードをそのまま本番環境へとデプロイできます。確実に動く保証が取れているため、なんの心配もなく開発作業を進められます。

開発、テスト、本番実装までをシームレスに行い、今までよりも素早く安全にサービスを公開したい方はDockerとAWSの活用がおすすめです。

デメリット

デメリット1. 学習コストが高い

Dockerを使いこなすには、OSやサーバーに関する専門知識が必要です。

これまでサーバーに関する知識はあまり吸収せず、コードを書くことに集中していたエンジニアにはなかなか難しい仕組みとなっています。

Dockerは2013年に初登場した、比較的新しい部類のサービスです。名前は知っていても、詳細を説明できるエンジニアがチームにいないというケースも多いのではないでしょうか。

DockerはRubyやPHPといったプログラミング言語と比べると、無料でわかりやすい解説がされているサイトの数が少ないです。Qiitaやteratailなどのナレッジサイトでは盛り上がりを見せているものの、その多くは中上級者向けの内容となっています。

そのため現段階では、これから勉強を始める人が無料のネットコンテンツだけで知識を吸収していくのは厳しいでしょう。

気に入ったDocker入門書を1冊読んで実践したり、スキルシェアサービスを利用して詳しい人から学んだりするのが習得への近道なため、学習コストが多くかかってしまいます

デメリット2. 敷居が高い

「Wordpressの開発案件は、エンジニアをアサインせず、基本的にはデザイナーにすべて任せている」という企業の方もいるでしょう。

そのような場合、これまでの運用をやめてDockerで対応しようとすると「デザイナーの私はコマンドラインなんて触ったことないのに大丈夫かな…」と不安になる人が出てくる恐れがあります。

Docker環境は、一度テキストファイルを作ってしまえば、あとはコマンドひとつで立ち上げることが可能です。しかし、慣れていない人に「いかにもエンジニア」といった黒い画面を見せたところで、尻込みされてしまうケースがあります。

実際にDockerを使ってローカル開発環境を用意したい場合は、デザイナーも含めた社内研修の実施がおすすめです。Docker環境の起動や、停止に関するコマンドの操作は一度覚えてしまえば簡単な手順なため、短期間で研修を終えられるでしょう。

DockerでWordpressの開発環境を構築する方法

Docker Desktop

環境構築の前提条件

ここからは「ローカル環境でWordpressを動かす」ということを目的に、基本的な事柄のみ押さえた開発方法をご紹介していきます。

今回ご紹介する環境構築の条件は以下のとおりです。

  • WordPressのバージョンは最新版
  • MySQLのバージョンは5.7
  • docker-composeのバージョンは2
  • テーマやプラグインの開発に特化

インストール

まずはDocker Desktopをインストールします。

Mac版とWindows版の2種類があるため、ご自身のPCのOSを選んでインストーラーをダウンロードしてください。

なお、Dockerを利用するにはDockerアカウントを作成する必要があります。インストール開始時やDocker起動時にサインインを求められるので、その際にはアカウントを作成してサインインしましょう。

docker-compose.ymlの作成

任意のディレクトリに「docker-compose.yml」を作成します。

このファイルには以下の通り記述してください。

version: '2' # Composefileのバージョンを2に設定

services:
  wordpress:
    image: wordpress:latest # MySQL5.7公式イメージを利用
    ports:
      - "3001:80" # ポート番号の設定
    depends_on:
      - mysql # mysqlを立ち上げた後にWordpressを立ち上げる
    env_file: .env # 環境変数の定義に.envを利用
    volumes:
        - ./wp-content:/var/www/html/wp-content # マウントするディレクトリを指定

  mysql:
    image: mysql:5.7 # MySQL5.7公式イメージを利用
    env_file: .env # 環境変数の定義に.envを利用
    ports:
      - "3306:3306" #ポート番号の設定

.envの作成

docker-compose.ymlを作成した際、環境変数の定義に「.env」を利用するよう設定しました。

docker-compose.ymlと同じディレクトリに「.env」ファイルを作成して、次のように記述してください。

WORDPRESS_DB_NAME=wordpress
WORDPRESS_DB_USER=wp_user
WORDPRESS_DB_PASSWORD=hogehoge

MYSQL_RANDOM_ROOT_PASSWORD=yes
MYSQL_DATABASE=wordpress
MYSQL_USER=wp_user
MYSQL_PASSWORD=hogehoge

マウントするディレクトリの作成

続いて、docker-compose.ymlと同じディレクトリに「wp-content」という名前のディレクトリを作成してください。

このwp-contentディレクトリは、docker-compose.yml作成の際、コンテナ上の「/var/www/html/wp-content」にマウントするように設定しました。そのため、通常のWordpressのwp-contentディレクトリと同じように扱えます。

このディレクトリでthemeやプラグインを作成していくことで、ローカルにコードを持ちながら、本番環境と同じ条件でテーマを編集したり、プラグインをテストしたりできるようになります。

コマンドで実行する

コマンドラインを起動します。

先ほど作成したdocker-compose.ymlを保存しているディレクトリに移動し、以下のコマンドを実行してください。

$ docker-compose up -d

これでローカル開発環境を作成と起動ができました。

http://localhost:3001にアクセスすると、Wordpressの画面が表示されます。

Wordpress初期画面

ここまで設定してから、docker-compose.ymlでマウントしたwp-contentの中を見てみると、themeディレクトリ等が作成されていることを確認できます。

ディレクトリ構造

▲マウントしたディレクトリに各種ファイルが作成されている

これでDockerを使ったローカル開発環境の構築は完了です。

ここから先は、普段通りの手順で開発作業を行えます。

一旦この環境を停止したい場合は、次のコマンドを実行してください。

$ docker-compose stop

停止後に起動する場合は、以下の2種類のコマンドが利用できます。

$ docker-compose up

または

$ docker-compose start

「up」はコンテナの作成と起動を同時に行うコマンドですが、一度コンテナを作成している場合は起動のみを行います。

一方「start」はコンテナの起動のみを行うコマンドで、コンテナが作成されていない場合はエラーになります。

2種類とも環境を「起動」できるため、一度コンテナを作成している場合はどちらを選んでも構いません。

この環境を削除する場合は、以下のコマンドを実行しましょう。環境を削除しても、wp-contentフォルダの中身まで一緒に消えてしまうことはないので安心して使ってみてください。

$ docker-compose down

Dockerを活用してローカル開発を簡単&便利に!

Dockerは無料で利用できるコンテナ型仮想化ソフトウェアです。

  • チーム全員でローカル開発環境を簡単に揃えたい
  • ローカル開発環境の構築をもっと手早く行いたい
  • ホスト型仮想化によるリソース消費に悩まされている
  • WordPressのアップデートに関する検証を楽にしたい

と感じている方には特におすすめです。ぜひ利用を検討してみてください。

(執筆:fuzuki 編集:Kimura Yumi)

SHARE

  • 広告主募集
  • ライター・編集者募集
  • WorkshipSPACE
週1〜3 リモートワーク 土日のみでも案件が見つかる!
Workship