WordPressのテーマやプラグイン開発、またそれらの動作検証等を行う際は開発環境の構築が必須です。サーバーを用意してワードプレスをインストールして…とやってもいいですが、Dockerを用いると簡単に開発環境の構築を行うことが出来ます。
目次
Dockerとは
Dockerは軽量なコンテナ型の仮想化環境を構築するためのソフトウェアです。
コンテナ型の仮想化環境では、Linuxカーネルが持つコンテナ機能を用いて、実行環境を他のプロセスから隔離しその中でアプリケーションを動作させます。
コンテナはLinuxの通常プロセスとほぼ同様ですが、名前空間やリソースが他のプロセスから隔離され、それぞれ独立して設定を持てるようになっています。つまりコンテナ内のアプリケーションからは、独立したコンピュータ上で動作しているように見えているという事になります。
コンテナを管理するコストはプロセスを管理するコストとほぼ変わらないため、VMware Player、Windows Virtual PC、VirtualBoxといった仮想マシンを管理するコストと比較すると非常に軽量なため、低コストで運用することが可能です。
Docker Composeとは
Docker Composeは複数のコンテナをまとめて管理するためのツールです。
コンテナを用いてアプリケーションの実行環境を構築する場合、複数コンテナを多数連携させて運用するケースが多いため、それぞれを独立して管理している場合、コンテナのビルド設定や起動オプション等の管理が煩雑になりがちです。
Docker Composeを用いると、それらの設定値や各コンテナの起動/停止/生存確認/起動順の調整といったオペレーションをより簡単に管理することが可能となります。
Docker Composeではビルド設定や起動オプション等、複数のコンテナ定義をymlファイルに記述しdocker-compose
という簡単なコマンドを通じてコンテナの起動/停止等を行います。
Docker環境を構築する
Docker、Docker Compose を動作させるためには、まずそれらを自らの利用しているOSにインストールする必要があります。
Docker環境を構築する – 前提
Docker環境の構築作業を行うにあたって、下記の環境であることを前提に解説しています。
また執筆時(2018/09/20)現在のインストール手順となります。
- VM: VMware(R) Workstation 14 Player
- OS: ubuntu-18.04
Docker環境を構築する – Dockerのインストール
旧バージョンのDockerが既にインストールされている場合はアンインストールを行います
$ sudo apt-get remove docker docker-engine docker.io
パッケージ情報を更新します
$ sudo apt-get update
aptがHTTPS経由でリポジトリを使用できるようにパッケージをインストールします
$ sudo apt-get install \
apt-transport-https \
ca-certificates \
curl \
software-properties-common
Docker公式のGPG keyを追加します
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
stable repositoryを利用するための準備を行います
$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"
再度パッケージ情報を更新します
$ sudo apt-get update
Dockerをインストールします
$ sudo apt-get install docker-ce
Dockerコマンドをユーザーからsudoなしで実行出来るようにします
$ sudo usermod -aG docker $(whoami)
同一ユーザーで再ログインします
$ sudo su - $USER
これでdocker
コマンドをユーザーより利用出来るようになりました。
下記コマンドを実行してバージョンが表示されればOKです。
$ docker --version
# Docker version 18.06.1-ce, build e68fc7a
Docker環境を構築する – Docker Composeのインストール
下記コマンドを実行します
※最新のバージョンはこのページより確認して適宜差し替えて下さい。(1.22.0
の部分)
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
ダウンロードされたバイナリに実行権限を与えます
$ sudo chmod +x /usr/local/bin/docker-compose
これでdocker-compose
コマンドが利用出来るようになりました。
下記コマンドを実行してバージョンが表示されればOKです。
$ docker-compose --version
# docker-compose version 1.22.0, build f46880fe
docker-compose.yml
を作成する
任意のディレクトリに移動し、docker-compose.yml
という名前のファイルを下記内容で作成します。
version: '3'
services:
proxy:
image: jwilder/nginx-proxy
restart: always
volumes:
- /var/run/docker.sock:/tmp/docker.sock:ro
- /etc/localtime:/etc/localtime:ro
ports:
- '80:80'
wordpress:
image: wordpress:4.9-php7.2-apache
restart: always
volumes:
- ./wordpress:/var/www/html
- /etc/localtime:/etc/localtime:ro
environment:
VIRTUAL_HOST: wp.local.lcl
WORDPRESS_DB_HOST: wordpress_mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: admin
WORDPRESS_DB_NAME: wordpress
wordpress_mysql:
build: ./mysql
restart: always
volumes:
- ./db-data:/var/lib/mysql
- /etc/localtime:/etc/localtime:ro
environment:
MYSQL_ROOT_PASSWORD: admin
MYSQL_DATABASE: wordpress
command: >
--default-authentication-plugin=mysql_native_password
今回はmysql
のコンテナをカスタマイズしているため、下記対応も行います。
docker-compose.yml
と同階層にmysql
という名前のディレクトリを作成します- 作成した
mysql
ディレクトリ内に下記2つのファイルを作成しますcustom.cnf
Dockerfile
ファイル内容は下記の通りです。
custom.cnf
[mysqld]
character-set-server=utf8mb4
collation-server=utf8mb4_ja_0900_as_cs_ks
max_allowed_packet=16M
sql_mode=''
Dockerfile
FROM mysql:8.0
COPY ./custom.cnf /etc/mysql/conf.d
コンテナを起動する
上記ファイルの作成が完了したら、docker-compose.yml
と同階層に移動し、下記コマンドを実行します。
$ docker-compose up -d
上記コマンド実行後、全てのコンテナイメージのダウンロードや起動が自動で行われます。3つのコンテナが作成されればコンテナの起動は完了です。
同階層に生成されるwordpress
ディレクトリにwordpress
本体のファイルが格納されます。開発時はこのディレクトリ内のファイルを編集していくことになります。
注意点として、生成された全てのディレクトリ、ファイルの所有者は初期状態でroot
ユーザーになっているため必要に応じて所有者をログインユーザーに変更する等の対応が必要です。(※所有者を変更しない場合、ファイルの編集が行えません)
例)生成されたwordpress
ディレクトリ以下のファイル、ディレクトリの所有者を全てユーザー権限に変更する
sudo chown -R $(whoami):$(whoami) wordpress/
また、同階層に生成されるdb-data
ディレクトリにはmysql
のデータが格納されます。
hosts
を編集する
最後にhosts
ファイルを編集してwp.local.lcl
がlocalhostに向くように設定します。wp.local.lcl
というドメインはdocker-compose.yml
のwordpress
のセクションにて設定しているドメイン名です。(VIRTUAL_HOST
の項)
もし任意のものに変更している場合、自ら設定した値に読み替えてください。
$ sudo vim /etc/hosts
ファイルの任意の位置に下記行を追記して保存します
127.0.0.1 wp.local.lcl
ブラウザからアクセスする
これで開発環境の構築は完了です。あとはブラウザを立ち上げ、下記のURLにアクセスしましょう。
http://wp.local.lcl
下記の画面が表示されれば成功です。画面の指示に従ってインストールを進めます。
開発完了後、コンテナを停止して削除する際は下記コマンドにてまとめて削除出来ます。
$ docker-compose down
おわりに
Dockerコンテナは他にも様々な種類のものが公式より提供されています。Docker Hubにはたくさんのコンテナイメージが公開されていますので是非チェックしてみましょう。
Dockerを有効活用して快適なWordPress開発を初めましょう!(`・ω・´)ゞ