鯛めしのお釜

ウェブに関する技術的なメモを書いていきます。

Docker for Mac でローカルに WordPress を設置する

Docker for Mac を使ったことが無かったので、試しに WordPress 環境を構築してみることにした。

  

---

<全体の流れ>

  1. Docker for Mac インストール
  2. DB を用意する
  3. WordPress を設置する
  4. ソースをローカルで管理する

 

---

<1. Docker for Mac インストール>

まずはこちらを要チェック。

docs.docker.com

Container や Image の作成、一覧表示、削除といった基本的なコマンドは上記ドキュメントに記載されている。

1つだけ、Image を消す場合は、それを利用している Container を先に消さなければならないという点に注意。最初、Image だけ消そうとするもエラーが出て消せず、「?」となった。

Container と Image の削除手順は次の通り。

  1. 全 Container を表示 $ docker ps -a
  2. Container 削除 $ docker rm {Container ID}
  3. 全 Image を表示 $ docker images
  4. Image 削除 $ docker rmi {Image ID}

これで Docker のインストール作業と基本的なコマンドのお勉強はおしまい。

 

---

<2. DB を用意する>

WordPress を動かすために DB 環境を作ってあげないといけない。ということで MySQL を用意したいのだが、これは Docker に用意されているコマンドを1行叩けば勝手に作ってくれる。

というわけで、Docker Hub( https://hub.docker.com/ )でアカウント作ってログイン。

上記サイトで「mysql」と検索するとオフィシャルページが出てくるが、ここに MySQL のバージョンや、Container を作るためのコマンドが解説付きで記載されているので、これらを参考に自分に必要なコマンドを用意する。

https://hub.docker.com/_/mysql/

自分の場合、次のようなコマンドを叩くことにした。

$ docker run --name test_wordpress_db -e MYSQL_ROOT_PASSWORD=pass -d mysql

バージョン Tag を指定せずにコマンドをたたくと次のようにメッセージが表示され、最新版が入るようになっている。

Unable to find image 'mysql:latest' locally

latest: Pulling from library/mysql

上記処理が終わったら、「$ docker ps」と「$ docker images」を叩いて、それぞれ MySQL 用のブツができていることを確認する。

これで DB 環境の用意は完了。

だいたいこのあたりから「あれ自分なんもしてなくない?」という実感がわきはじめてウッキウキになってくる。あんだけお世話になった VirtualBox が霞む・・・。

 

---

< 3. WordPress を設置する>

例によってこちらも Docker Hub の WordPress オフィシャルページを参照する。

https://hub.docker.com/_/wordpress/

自分が用意したコマンドは次の通り。

$ docker run --name test_wordpress --link test_wordpress_db:mysql -p 8080:80 -d wordpress

こちらもバージョン Tag を指定しなかったので、最新版が取得される。

Unable to find image 'wordpress:latest' locally

latest: Pulling from library/wordpress

Container と Image にブツが入っていることを確認したら、さっそくブラウザ表示させてみる。

http://localhost:8080/

f:id:red_snapper:20161109120402p:plain

おお・・・できた・・・。

ちょろっと Docker を触ってみたいとか、WordPress の雰囲気を見てみたいという程度ならここまでの作業でもう十分な気がする。

チーム開発したい時に考慮すべき点を Docker を使ってどこまでスムーズに対応するか〜といったところは、まだまだ調べないといけない。

 

---

<4. ソースをローカルで管理する> 

インストールされた WordPress のファイル群ってどこに配置されるんやろ・・・と思っていたら、次のコマンドで確認できることがわかった。

$ docker exec -it test_wordpress bash

これで先程設置した WordPress のコンテナにある「/var/www/html」ディレクトリに入ることができる。ここで「ls」コマンドを打てば php ファイル群が表示される。

場所が分かったところで、次はこのソースをローカルで作業できるようにしたい。

色々調べたところ、WordPress の Container 作成時のコマンドでディレクトリ指定すれば、ローカルマシンのディレクトリと Container のファイルを簡単に共有することができるらしい。ほうほう・・・。

というわけで先程作成した WordPress の Container と Image を削除し、再度ディレクトリ指定付きコマンドを叩くことにした。

$ docker run --name test_wordpress --link test_wordpress_db:mysql -p 8080:80 -v /{ローカルディレクトリのパス}/test_wordpress:/var/www/html -d wordpress

これでローカルのディレクトリに Container と同じファイルが入った。

f:id:red_snapper:20161109130018p:plain

ちなみに最初、-v のコマンドを -d よりあとに書いたら、ファイルは共有されないわ、Container の Port が無効になってるわと色々おかしなことになった。こういうのを順番を無視して思いついたままに書いてしまうタイプの人は気を付けよう。

 

---

以上、Docker を使って WordPress の基本的な環境構築ができた。

ここから、次は以下のようなことを試してみようと思う。

  • ローカルで編集したファイルを Docker へマウントする
  • 既存の WordPress ソースを Docker 環境に移行する
  • Dockerfile の使い方
  • 他 PC で全く同じ環境を再現する
  • Docker の phpMyAdmin を使う

自分はインフラまわりの苦手意識が強いのでモタモタするところも多いと思うけど、どこで詰まったか、みたいなことも合わせて書くことで、同じような悩みを抱えるウェブエンジニアの助けになったら嬉しい。

とりあえず今回はこんな感じ。

 

---

(2016/11/11 追記)

Docker Compose を使って WordPress を設置する方法を実践したので下記の通りリンクを貼っておく。

redsnapper.hatenablog.com

 

---

(2016/11/29 追記)

CentOS プロジェクトから提供されている Dockerfile を使って WordPress を設置する方法を試してみたので、以下の通りリンクを貼っておく。

redsnapper.hatenablog.com