【初心者向け】DockerでWordPressを動かす方法を解説
Dockerについて知らない人「Dockerって聞いたことあるし、ちょっと使ってみたいけど難しいのかな。便利なら使ってみたいな。」
こういった初心者へ向けてDockerでWordPressを簡単に動作させる方法をお伝えします。
本記事の内容
- Dockerとは?【簡単に環境構築ができるツール】
- Dockerでローカル環境にWordPressを簡単に立ち上げる方法
- Dockerのメリットとデメリット【初心者ベースでの解説】
Dockerとは何か?【簡単に環境構築ができるツール】
Dockerは設定ファイルさえあれば簡単なコマンドを打つだけで、高度な環境設定を一瞬で構築できてしまう素晴らしいツールです。
細かい設定を自分でしようとする場合は難しいですが、後述する例のDocker-Composeのファイルをコピペすれば誰でも簡単に使えます。
Dockerのことを全部をわかっていなくても、基本さえ押さえれば簡単に使うことができます。
本記事ではDockerでWordPressをとても簡単にローカル環境で立ち上げる方法を解説しています。
使ってみて慣れることに主眼をおいているため、Dockerのimageやコンテナーの概念の説明はせず、使い方から入っています。
Dockerでローカル環境にWordPressを簡単に立ち上げる方法
Docker本体のインストール
Dockerのトップページに進み、「Get started」ボタンをクリックしてダウンロードページに進みます。「Download for Mac」もしくは「Download for Windows」ボタンをクリックして「Get Docker」ボタンをクリックしてインストールファイルをダウンロードします。
ローカルにダウンロードしたファイル(600MB以上の大きめのファイル)をクリックしてパソコンにDockerをインストールします。
Docker Compose設定
ここからはターミナルを使って操作します。
ターミナルを起動して、任意のディレクトリを作成して移動します。($は打ち込みません。$以降の文字を打ち込みます。)
ここではユーザディレクトリ直下に「docker_wordpress」というディレクトリを作成します。(任意のディレクトリ名でOKです)
$ mkdir -p $HOME/docker_wordpress
※Linuxコマンド解説
– 「mkdir」で「docker_wordpress」ディレクトリを作成
– 「$HOME」はユーザディレクトリを指す
次に「docker-compose.yml」というファイルを「docker_wordpress」ディレクトリ内に作成します。
以下の内容を「docker-compose.yml
」ファイルに書きます(以下をコピー&ペーストする)。
version: "3.1"
services:
wordpress:
image: wordpress #WordPressのイメージ
container_name: wp1-wordpress #WordPressのコンテナ名
ports:
- "8000:80" #8000ポートでWordPressにアクセスできる
volumes:
- ./html:/var/www/html #docker_wordpress/html にデータがマウントされる
environment:
WORDPRESS_DB_NAME: wordpress_db #DBの名前
WORDPRESS_DB_PASSWORD: mysql_password #MySQLのパスワード
depends_on:
- mysql #コンテナをmysqlの後に立ち上げる
restart: always
mysql:
image: mariadb #MariaDBのイメージ
container_name: wp1-mariadb #MariaDBコンテナ名
ports:
- "3306:3306" #ポートがバッティングする場合は変える 例) - "33060:3306"
volumes:
- db_mysql:/var/lib/mysql #dockerのvolumeにデータがマウントされる
environment:
MYSQL_ROOT_PASSWORD: mysql_password #MySQLのパスワード
restart: always
phpmyadmin:
image: phpmyadmin/phpmyadmin #phpMyAdminのイメージ
container_name: wp1-phpmyadmin #phpMyAdminコンテナ名
ports:
- 8080:80 #8080ポートでphpMyAdminにアクセスできる
volumes:
- ./phpmyadmin/sessions:/sessions #docker_wordpress/phpmyadmin/sessions にデータがマウントされる
environment: #環境変数の指定
- PMA_ARBITRARY=1
- PMA_HOST=mysql
- PMA_USER=root
- PMA_PASSWORD=mysql_password
depends_on:
- mysql #コンテナをmysqlの後に立ち上げる
volumes:
db_mysql:
docker-compose.yml
ファイルは設定をまとめて書くことができ、Docker Compose
のコマンドを使うことにより、簡単にDockerの起動が可能です。
YAMLファイル内でコメントをしていますが簡単に説明を記載します。
※ここは補足なので読み飛ばしてもOKです。
- image:
DockerのimageファイルでDocker Hubからもとになるファイルを取得します。一度ローカルに落としたら次からはimageはダウンロードし直さないため、2回目からは起動が早くなります。 - container_name:
コンテナの名前です。複数のWordPressを立ち上げるなどをする際はコンテナ名がバッティングする可能性があるので、必要に応じてコンテナ名は変更してください。 - ports:
ポートの設定です。例えばwordpressサービスのports設定では「8000:80」となっていますが、今回の場合はlocalhostの8000番ポートでlistenして、Dockerのネットワーク内の80番ポートにつなげているという感じです。 - volumes:
「【ローカル(Mac)のディレクトリ】:【Docker内のディレクトリ】 」で設定されています。
ローカルとDocker内のディレクトリをマウントして紐付けしています。
wordpressの方では、同じローカルディレクトリ内の「html」ディレクトリにDockerコンテナ内の「/var/www/html」をマウントしています。ローカルの「html」内を変更すると、今回の場合であればlocalhost:8000で表示されている表示が更新されます。
mysqlでは、Docker Volume内の db_mysql に紐付けしており、一番下のvolumes: と db_mysql:の記述も必要になります。volumes: db_mysql:
- environment:
環境変数の設定です。
wordPressでは
「WORDPRESS_DB_NAME (DBの名前)」
「WORDPRESS_DB_PASSWORD(rootとなるmysqlコンテナで設定しているパスワード)」
を設定しています。
この他「WORDPRESS_DB_USER」でDBユーザをroot以外に変更するなどの設定もあります。 - depends_on:
WordPressはmariaDB(mysql)が起動した後に、起動させる必要があります。
「depends_on」で紐付けをすることができ、コンテナの起動の順番をコントロールすることができます。wordpress, phpmyadminはmysqlの起動後に立ち上がるという設定になっています。 - restart:
docker単体でOSの起動時にコンテナを起動させる設定です。
Dockerの立ち上げ
ターミナルで「docker_wordpress」ディレクトリ(作成した任意のディレクトリ)へ移動します。
$ cd $HOME/docker_wordpress
「docker-compose up -d
」コマンドでdockerを起動します。「-d」オプションでバックグランドで起動します。
$ docker-compose up -d
以下のような結果が出れば、起動成功です。
Creating network "docker_wordpress_default" with the default driver
Creating volume "docker_wordpress_db_mysql" with default driver
Creating wp1-mariadb ... done
Creating wp1-phpmyadmin ... done
Creating wp1-wordpress ... done
WordPressの設定
Dockerが立ち上がるのを少し待ち(数十秒程度)、ブラウザでlocalhost:8000にアクセスします。
WordPressのインストール画面になれば正常に起動できています。
※もし「Error establishing a database connection」というエラーが出るときはDBの接続に失敗しているので、わからなければターミナルにて「docker-compose down --volumes
」コマンドで設定を消して、「docker_wordpress」ディレクトリ内のhtml, phpmyadminディレクトリも削除し、最初からやり直してみてください。
ユーザー名やパスワードなど初期設定をして、インストールを完了させれば、WordPressが立ち上がります。
「docker_wordpress」ディレクトリ内に作成された「html」ディレクトリにWordPressのファイルができているので、ここからWordPressテーマの制作などを行います。
Volumesでデータをマウントしており、データには永続性があります。
データーベースへのアクセス
phpMyAdminをインストールしているので、localhost:8080にアクセスすれば、phpMyAdminの画面が立ち上がって操作することができます。
データベースを直接操作する必要がある場合はここから操作可能です。
Dockerの起動状況の確認
余談になりますが、Dockerの状況などを確認するコマンドを紹介します。
「docker ps -a」 コマンド
Dockerのコンテナの状況を確認することができます。「-a」オプションで起動していないコンテナを含めて、存在するコンテナをすべて確認できます。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f2425751854e wordpress "docker-entrypoint.s…" 29 seconds ago Up 22 seconds 0.0.0.0:8000->80/tcp wp1-wordpress
205a432b0c79 phpmyadmin/phpmyadmin "/docker-entrypoint.…" 30 seconds ago Up 23 seconds 0.0.0.0:8080->80/tcp wp1-phpmyadmin
63654239d6a9 mariadb "docker-entrypoint.s…" 32 seconds ago Up 29 seconds 0.0.0.0:3306->3306/tcp wp1-mariadb
「docker volume ls
」コマンド
Dockerのvolumeを確認できます。mariaDBを「db_mysql」の名前で設定したので以下のようになります。
$ docker volume ls
DRIVER VOLUME NAME
local docker_wordpress_db_mysql
Dockerの停止方法
一時的に停止する場合は「docker-compose stop
」でコンテナを停止させます。
$ docker-compose stop
Stopping wp1-wordpress ... done
Stopping wp1-phpmyadmin ... done
Stopping wp1-mariadb ... done
※参考までに起動中のすべてのコンテナの停止は「docker stop $(docker ps -q)
」で行えます。
※個別に止める場合は「docker ps
」でコンテナIDを確認し「docker stop 【コンテナID】
」で個別に停止することもできます。
Dockerを再度起動させる方法
一時的に停止したコンテナは「docker-compose start
」コマンドで再度、起動できます。またstop→startをしたい時は「docker-compose restart
」で対応できます。
「docker-compose.yml
」の設定を変えた場合は「docker-compose up -d
」で設定を上書きして起動させます。
$ docker-compose restart
Restarting wp1-wordpress ... done
Restarting wp1-phpmyadmin ... done
Restarting wp1-mariadb ... done
Dockerのコンテナを削除する方法
別のプロジェクトを立ち上げるときなど、Dockerコンテナの名前がバッティングしてしまうなどの際に、コンテナを削除したい場合には「docker-compose down
」コマンドを使います。
コンテナを消しても、volumesでマウントしているため、設定は存続し続けるのでデータは消えません。
$ docker-compose down
Stopping wp1-wordpress ... done
Stopping wp1-phpmyadmin ... done
Stopping wp1-mariadb ... done
Removing wp1-wordpress ... done
Removing wp1-phpmyadmin ... done
Removing wp1-mariadb ... done
Removing network docker_wordpress_default
※ コンテナを消すのではなく、別プロジェクトでコンテナ名(docker-compose.yml の container_name)を違うものにするという方法もあります。
「docker-compose down
」コマンドでコンテナを停止した時は「docker-compose up -d
」で起動すると再度コンテナが作成されてDockerが立ち上がります。Volumesのデータを消していなければ、データが復元されます。
Dockerのコンテナと設定もすべて削除する方法
Dockerのコンテナだけでなく、WordPressで設定したデータなど含めて削除したい場合は、「docker-compose down –volumes」コマンドでvolumesのデータも消します。
$ docker-compose down --volumes
Stopping wp1-phpmyadmin ... done
Stopping wp1-wordpress ... done
Stopping wp1-mariadb ... done
Removing wp1-phpmyadmin ... done
Removing wp1-wordpress ... done
Removing wp1-mariadb ... done
Removing network docker_wordpress_default
Removing volume docker_wordpress_db_mysql
「–volumes」オプションでvolumesのデータを削除します。
また「docker_wordpress」ディレクトリ内の「html」「phpmyadmin」ディレクトリも削除します。
※参考までですが、「--rmi all
」オプションをつけて「docker-compose down --volumes --rmi all
」を実行するとDockerのimageも削除できます。
(もとのWordPressやmariaDBなどを最新にする場合などimageを消したいとき)
Dockerのメリットとデメリット【初心者ベースでの解説】
Dockerのメリットとデメリットのまとめです。
WordPressでテーマ開発をしたことがあれば、「local by flywheel」や「MAMPP」「XAMPP」でよいのでは?と思うかもしれません。Dockerには設定ファイルさえあればコマンドひとつで高度な環境を簡単に構築できるなど使いこなせると様々なメリットがあります。
Dockerのメリット
- 簡単に環境構築ができる
初期設定はほぼコピペでよく、初期設定さえしてしまえば次回からの立ち上げが早いです。 - 開発現場でも難しい設定なく全員同じ環境を作り出せる
開発現場では、基本的にはDockerの起動と停止がわかっていれば良く、難しい設定をせず簡単にプロジェクトの開発環境を構築できます。
システム開発の現場では大本のDocker環境構築はインフラやバックエンドのレベルの高いエンジニアが設定してくれている事が多く、自分で設定することはあまりないと思います。 - 環境の違いを吸収でき、効率よく開発できる
使いこなせるようになると、別々の環境で同じ状態を容易に作り出すことができるので開発効率があがり、動作も軽いです。
例えば、Windows環境とMac環境で同じ環境を作り出せる、サーバとローカルの違いも吸収できる などが上げられます。
Dockerのデメリット
- 学習コストが少し高め
細かい設定をしようと思ったらそれなりの学習が必要な点です。
初心者が細かい設定をしていこうとすると理解できないとハマってしまうことが多いと思います。
例えばDBをmariaDBでなくmysqlにしようとした時、慣れていれば簡単ですが設定を少しいじろうと思うと、意外と途端に動かなくなってハマってしまうなどということがあったりします。(mysqlだと現時点では認証の関係で最新バージョンで正常に動かない場合があり、mysql:5.7を指定しなければならないなどクリアすべき点があります。) - レンタルサーバでは基本Dockerは動かせない
サーバ上でDockerを使うにはレンタルサーバではなく、基本的にはVPSなどを使う必要があるので、実際の運用をする場合にはそれなりのスキルが必要です。
サーバ上で動かすにはVPSやクラウド(AWSやGCPなど)を使う必要があります。 - 初心者にとっては、あくまでローカル環境を簡単に構築できるツールとして利用するのがベター。
Dockerを使ってWordPressを構築するまとめ
Dockerを使ってWordPressを簡単に起動させる方法を紹介しました。
Dockerはホームページ制作の現場レベルでは、ほぼ使うことは無いといってよいですが、SIerなどWeb系システム開発レベルの現場では逆に使う可能性が高くなるため、慣れておいた方がよいはずです。
企業に常駐でフロントエンドのエンジニアとして入るのであれば、Dockerの基本操作は知っておいた方がよいかもしれません。
- Dockerは簡単に環境構築ができるツールです。
違うPC環境などでも、設定ファイルから簡単に同じ環境を作り出すことが可能です。 - Dockerを使って、ローカル環境にWordPressを簡単に立ち上げるには、
docker-compose.yml
を作成して、「docker-compose up -d
」を実行すればOKです。
サーバでDockerの設定ができるようになると、各種ツールの導入などが驚くほど簡単にできるなどのメリットもあります。
参考になれば幸いです。
※当サイトでは一部のリンクについてアフィリエイトプログラムを利用して商品を紹介しています