Dockerでwordpressの開発環境をつくる

前回の座談会でDockerを使用して、開発をされてらっしゃる方がいたので私も感化されて、開発環境をVagrantからDockerに移動しようと目論んでいる。

(こういうデザインできるとめっちゃいいですよね。)

どちらも仮想環境を構築するプログラムではあるがロッカーの場合はコンテナを使用することで複数のレイヤーからなるイメージをセットアップすることができる。

つまりということかと言うVagrantよりアプリケーションの追加がしやすいというのがさっと学んだ印象。

もちろん、Vagrantも任意のboxを用意すれば、自動で任意の環境を構築できる。

そういう意味ではどちらも近いような気がする。

仕組みとしては、Linux上で動くDockerエンジン(クジラの部分)上で動くコンテナ(OSだったり、ミドルウェア、アプリだったり)を積み上げていって放り込んで動かしていく感じです。

まぁそれはさておきDockerを導入していくあたり、windows10では、HyperVもしくは、VirtualBoxを使用するやり方がある。

今回はバーチャルボックスを利用していく。

本体ダウンロード

まずDocker Tool Box、及びVirtualBoxをダウンロード&インストール。

そうするとデスクトップに3つアイコンが追加されているはず。

・VirtualBox

・Docker Quickstart Terminal

・Kitematic(Alpha)

Dockerエンジン起動

Docker Quickstart Terminalを起動するとバーチャルマシンの設定と起動が行われる。

コンテナ準備

今回はワードプレスの開発環境用意したいのでワードプレスのイメージとMySQLのイメージをプルする。

その後docker runをすることで、ワードプレスの画面が表示されるのだが、DBと連携が取れていない。

コンテナのイメージの指定、マウントファイルの設定、その他の環境変数の設定はドキュメントルート内にあるdocker-compose.yml内に記述すると一括で処理してくれる。

docker-composeは、DockerToolBoxに入っているオーケストレーションツールの1種で、複数のコンテナを同時に扱ったり、ネットワークの設定までできる、便利なやつ。

今回は、環境変数は.envファイルに記述した。

#docker-compose.yml

version: "2"

services:

# wordpress settings
wordpress:
image: wordpress:latest
container_name: "wordpress"
ports:
- 80:80
environment:
WORDPRESS_DB_HOST: db:3306
env_file: .env
restart: always
volumes:
- ./sitedata:/var/www/html/
depends_on:
- db

# mysql settings
db:
image: mysql:latest
container_name: "wp-mysql-db"
env_file: .env
restart: always
volumes:
- db-data:/var/lib/mysql/

volumes:
db-data:
driver: local

起動

Docker Quickstart Terminal内でドキュメントルートまで移動し、

docker-compose up -d

でバックグラウンドで起動が行われる。

最初はコンテナのダウンロードに時間がかかるが、しばらく待つとlocalhostにアクセスすることで、wordpressの初期設定が行える画面が表示されるはず。

感想

・コンテナを指定するだけで、すぐ環境が用意できるし、規格化がされているから、便利。

・導入が手軽なのはいい。

・dockerはもちろん、オーケストレーションツールを使いこなすのがミソな気がする。

・あと、思ったよりコンテナが軽い?