DockerでCMSを動かす


色々と取り上げられることが多くなっているDockerですが、あまりWebサイト制作者側の
視点で使用されているケースを少なかったのでWebサイト制作者側の視点でどのようにして
CMSをDockerで動かすのかを記載します。

1. Dockerを動かす
2. Dockerの操作
3. Dockerfileの作り方
3-1. WordPress
3-2. Concrete5
3-3. Movable Type

4. dockerhubへ登録

※本記事はMacOSX(yosemite)をベースに記載します。

## 1. Dockerを動かす

言わずもがなかもしれませんが、DockerはLinuxのコンテナという技術を使用して
仮想環境を構築します。なのでMac直接Dockerを起動させるという事は出来ません。
色々なやり方はありますが、ここではboot2dockerを使用してDocker環境を構築します。

### 環境

まずはboot2dockerを動かすための環境を準備します。

+ Homebrew
+ VirtualBox

HomebrewとVirtualBoxのインストール方法については割愛します。

上記環境のインストールが環境すると次はboot2dockerのインストールです。
ここではHomebrewからのインストール方法を記載します。

1. 以下のコマンドを実行

```
$ brew install docker boot2docker
```

既にインストールされているかどうかは以下のコマンドを実行
※執筆時点の最新バージョン1.6.2

```
$ boot2docker version
Client version: v1.1.2
```

自分の環境が古いバージョンのままなのでこれを機に最新バージョンへアップデート

```
$ brew upgrade boot2docker
==> Upgrading 1 outdated package, with result:
boot2docker 1.6.2
==> Upgrading boot2docker
==> Installing boot2docker dependency: docker
==> Downloading https://homebrew.bintray.com/bottles/docker-1.6.2.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring docker-1.6.2.yosemite.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d

zsh completion has been installed to:
  /usr/local/share/zsh/site-functions
==> Summary
   /usr/local/Cellar/docker/1.6.2: 9 files, 7.3M
==> Installing boot2docker
==> Downloading https://homebrew.bintray.com/bottles/boot2docker-1.6.2.yosemite.bottle.tar.gz
######################################################################## 100.0%
==> Pouring boot2docker-1.6.2.yosemite.bottle.tar.gz
==> Caveats
To have launchd start boot2docker at login:
    ln -sfv /usr/local/opt/boot2docker/*.plist ~/Library/LaunchAgents
Then to load boot2docker now:
    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.boot2docker.plist
==> Summary
   /usr/local/Cellar/boot2docker/1.6.2: 3 files, 7.3M
```

これで最新バージョンになりました。
試しにdockerを起動させてみます。
初回時はboot2docker initで仮想マシンイメージをダウンロードしさせます。

```
$ boot2docker init
```

次に仮想マシンを実行します。

```
$ boot2docker up
Waiting for VM and Docker daemon to start...
.........................o
Started.

To connect the Docker client to the Docker daemon, please set:
    export DOCKER_HOST=tcp://localhost:2375
    unset DOCKER_CERT_PATH
    unset DOCKER_TLS_VERIFY
```

```
$ docker version
Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.4.2
Git commit (client): 7c8fca2
OS/Arch (client): darwin/amd64
Server version: 1.6.2
Server API version: 1.18
Go version (server): go1.4.2
Git commit (server): 7c8fca2
OS/Arch (server): linux/amd64
```

上記コマンドでDockerがバージョンを確認
私の環境ではエラーが発生

```
$ docker version
Client version: 1.6.2
Client API version: 1.18
Go version (client): go1.4.2
Git commit (client): 7c8fca2
OS/Arch (client): darwin/amd64
FATA[0000] Error response from daemon: client and server don't have same version (client : 1.18, server: 1.13)
```

これはClientのバージョンをbrewコマンドでアップしたがサーバ側(VMイメージ)が古かったため発生
以下のコマンドでVMをアップグレード

```
$ boot2docker upgrade
```


再度改めてdockerを試します。
```
$docker run -d -P --name web nginx
```

```
$docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                                           NAMES
cae57db9363e        nginx:latest        "nginx -g 'daemon of   6 minutes ago       Up 5 minutes        0.0.0.0:32769->80/tcp, 0.0.0.0:32768->443/tcp   web
```

ブラウザからポート32769にアクセスするとnginxの画面が表示されればオッケー

## 2. Dockerの操作

停止：

```
$ docker stop web
```

リストの一覧

```
$ docker images
```

コンテナ一覧

```
$ docker ps -a
```

コンテナを削除しないとimageの削除ができない


## 3. Dockerfileの作り方

既にgithubに公開されているリポジトリを元に起動方法とそこに記載されている
Dockerfileの解説を行います。

3-1. concrete5のインストールを行う

以下のgithubのリポジトリをclone
https://github.com/kurishimak/docker-concrete57


どうやらdocker-composeのインストールが必要とのこと
以下にdocker-composeのインストールについて記載

pythonからインストール
```
$ sudo brew install python
```

docker-composeのインストール

```
$ sudo pip install -U docker-compose
```

上記docker-composeを使用する準備が整いいざ、実行してみるとエラーに。。。
```
$ docker-compose up
SSL error: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:590)
```

以下のページを参考に対応してみましたがうまくいかず、どうやら私のPCのPython環境が微妙なようです。。。
https://github.com/docker/compose/issues/890

なので公式サイトに記載されている以下の方法でインストールしました
```
$ curl -L https://github.com/docker/compose/releases/download/1.2.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
```

さて、仕切り直しで再度、docker-composeコマンドを使用してコンテナの起動を実行してみます。

```
$ docker-compose up
```

![docker-compose1](https://s3-ap-northeast-1.amazonaws.com/s3.image-server/qiita/docker_compose_start1.png)
〜途中省略〜
![docker-compose2](https://s3-ap-northeast-1.amazonaws.com/s3.image-server/qiita/docker_compose_start2.png)

ここに表示されているDB_HOSTはconcrete5のインストールで使用します


いざ、インストール
![docker-compose2](https://s3-ap-northeast-1.amazonaws.com/s3.image-server/qiita/concrete5_install.png)

インストール出来ました！！

続きはまた今度で