Dockerはじめました~その２~

##Dockerを用いたWordPressの環境構築

---

##〜目次〜
・はじめに
・今回の目的
・Dockerfileとは
・WordPress環境の構築
・今回のまとめ

![Wordpress_Docker のコピー.png](https://qiita-image-store.s3.amazonaws.com/0/156243/054b4f98-d898-d774-efe7-081c75872991.png)

---
##はじめに

今回もMacでの環境構築になりますのでLinux、Windowsの方はご自身の環境に合わせて読んでいただけると幸いです。

以下、今回の環境
・Mac OSX Yosemite 10.10.5
・Docker 1.13.0

前回同様今回もスライドです。
今回もなぜスライド？？って思うかもしれませんがそこはスルーでお願いします。気にしたら負けです。


---

##今回の目的
Dockerを使用してWordPressの環境を構築します。
またそれに伴って、Dockerのイメージを構成しているDockerfileの中身を覗いてみます。

---

##Dockerfileとは
Dockerfileに記述された命令を読み込み、**自動的にイメージを構築できる**テキスト形式のドキュメントです。
コマンドライン上でイメージを作り上げる命令を全て記述します。ユーザは ```docker build``` を使い、複数のコマンド行の命令を順次実行し、イメージを自動構築します。

---
####Dockerfileのメリット
・開発に使うもの(apache、PHP、mysql等)をひとつづつインストールしながら構築していく手間を省ける

・それら全ての処理をひとつのDockerfileに記述しておくことでDockerの知識があまりない人でもコマンドひとつ叩くだけで全てのイメージとコンテナが作成可能


---
####Dockerfileのデメリット
※デメリットというか使用するにあたっての注意点です

・業務レベルで活用できるDockerfileを記述するにはそれなりの知識が必要になる

・開発環境を部分的に変更したい場合、Dockerfileに記述しなおす必要がある

・そもそも公式やDockerHubにあげている方のイメージをpullしてきた方が効率がよい場合がある

---

###WordPress環境の構築

　　　　　　　　![wordpressdockermac-1.png](https://qiita-image-store.s3.amazonaws.com/0/156243/f230d15b-71f0-4151-b99e-1b7f63ecc88f.png)




---
では今回はDockerを用いたWordPress環境の構築をしていきます。
本来ならば自分でDockerfileを作成してそれを```Docker build```するべきなのですが今回はすでに他の方が作成してくださったイメージをpullしてきて作成していきます。

※言い訳：今回のwordpress環境の構築をどのようなパターンで作成するか迷走してたら時間がなくなってました。。落ち着いたらちゃんと自分でDockerfileを書こうと思います。ごめんなさい。

---

###言い訳ついでに
もしDockerfileでイメージを作成する場合はローカルに適当なディレクトリを作成してその中にDockerfileを作成します。それを```docker build```することでイメージが作成できます。

sample_directory(適当なディレクトリ名)
　└── Dockerfile←ここに記述します


この場合のbuildの仕方は色々オプション等ありますが基本的には、

```$ docker build -t イメージ名:タグ名 .```

でbuildできます。

---
では改めて、Wordpressのイメージをpullしてきます。
今回はdockerでWordpressを構築する際によく利用されているtutum/wordpressをpullしてきます。
このDockerfileはgitHubにも公開してくださっています。
https://github.com/tutumcloud/wordpress

ではpullします。
```$ docker pull tutum/wordpress```

これでイメージがpullできたので以下のようにrunします。(ポートや名前は任意)
```docker run -d -p 9000:80 --name wordpress tutum/wordpress```

後はブラウザで確認するだけです。
http://127.0.0.1:9000/

---

####このままだともう終わってしまうので今pullしてきたtutum/wordpressのDockerfileの中身を覗いてみます。

---

ということで
以下のURLを参考に何をしているのか少し説明します。
https://github.com/tutumcloud/wordpress/blob/master/Dockerfile

---

####このDockerfileで使われているコマンド
FROM
・ベースイメージを指定します(必須)

MAINTAINER
・イメージの作成者を記述できます

RUN
・コマンドを実行します
・パッケージのインストールなどで多用するコマンドです

---

ADD
・指定したファイル・ディレクトリをコンテナ内にコピーします

EXPOSE
・外部に公開するポートを指定します

CMD
・docker run時に実行されるコマンドです


このDockerfileにこれらのコマンドで記述されていますが、他にもいくつかコマンドは存在しますので興味のある方は調べてみてください。

---


・今回使用するwordpressイメージ(tutum/wordpress)
　https://github.com/tutumcloud/wordpress


・そのtutum/wordpressにapacheやmysqlをベースイメージとして
　使用するイメージ(tutum/lamp)
　https://github.com/tutumcloud/lamp

また上記のtutum/lampはベースイメージとしてubuntu:trusty(OS)を使用しています。

---

##今回のまとめ

今回はpullしてきたtutum/wordpressのイメージ(Dockerfile)が完成されていたので無事DockerでWordPressの環境を構築することができました。

が、本来ならばWordpress用とその他のそれぞれのDockerfileを作成してコンテナを作り、それらをリンクさせないといけないような事があります。

また保存したデータなどの永続化やローカルで作成したファイルを開発環境(コンテナ内)にマウントするなど様々な問題があります。
これらのことを意識すると余計な工数がかかったりします。

---

####次回やること

そのため次回はこのWordPress環境を**Docker Compose**を使用して、それら全ての機能を一つのファイルにまとめてコマンド一発で起動・停止ができるようにしてみます。
(またWordPressですみません。今後はLaravelの環境も構築できるように頑張ります。)

---

####参考にさせていただいたサイト

http://www.slideshare.net/mookjp/dockerword-press
https://github.com/tutumcloud/wordpress
https://github.com/tutumcloud/lamp
http://qiita.com/ANTON072/items/b0e10c97f25cd5d77551
http://qiita.com/kmats@github/items/27c09f34aa4d338d40fc
http://docs.docker.jp/engine/reference/builder.html
http://denor.daa.jp/mac%E3%81%A7wordpress%E3%82%92%E7%B0%A1%E5%8D%98%E6%A7%8B%E7%AF%89


---

#ヲワリ