前回の座談会で 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 はもちろん、オーケストレーションツールを使いこなすのがミソな気がする。
・あと、思ったよりコンテナが軽い?