Wordpress + MySqlをさくっとDockerで

Wordpress構築案件があり、せっかくなのでdockerで構築してみました。

WordpressもMySqlもdocker hubにOfficialが上がっているので、それらを利用してシンプルに構築してみます。

## Officalイメージ

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

## VagrantベースBOX
ベースは以前作成したAtomicHostのVagrant用Boxを利用します。

```
$ mkdir wordpress
$ cd wordpress
$ vagrant init atomic-base
$ ls
Vagrantfile
```

Vagrantファイルもシンプルに

```lang:Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :

Vagrant.configure(2) do |config|
  config.vm.box = "atomic-base"

  # Wordpress
  config.vm.define "wordpress" do |atomic|
     atomic.vm.hostname = "wp.atomichost"
     atomic.vm.synced_folder ".", "/vagrant", disabled: true
     atomic.vm.network :forwarded_port, id: "ssh", guest: 22, host: 2222
  end
end
```

WordpressとMySqlは一つの仮想OS上に２つのコンテナを立ち上げるようにします。

## 連携
WordpressとMySqlを連携するには、-linkを利用します。

```
$ docker run --name zum-wordpress --link zum-mysql:mysql -d wordpress
```

## PULL
Docker hubからイメージを取得します。

```
$ sudo docker pull wordpress 
$ sudo docker pull mysql 
$ sudo docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
docker.io/wordpress   latest              4613a7aba13e        5 days ago          512.3 MB
docker.io/mysql       latest              6762f304c834        12 days ago         283.5 MB
```


## Environment
DB等各種設定値は起動時に-eで指定します。
主なところで、以下

<dl>
<dt>Wordpress</dt>
<dd>WORDPRESS_DB_HOST</dd>
<dd>WORDPRESS_DB_USER</dd>
<dd>WORDPRESS_DB_PASSWORD</dd>
<dd>MYSQL_ROOT_PASSWORD</dd>
<dd>WORDPRESS_DB_NAME</dd>
<dd>WORDPRESS_TABLE_PREFIX</dd>
<dd>WORDPRESS_AUTH_KEY</dd>
<dd>WORDPRESS_LOGGED_IN_KEY</dd>
<dd>WORDPRESS_AUTH_SALT</dd>
<dd>WORDPRESS_SECURE_AUTH_SALT</dd>
<dd>WORDPRESS_LOGGED_IN_SALT</dd>
<dd>WORDPRESS_NONCE_SALT</dd>

<dt>MySql</dt>
<dd>MYSQL_ROOT_PASSWORD</dd>
<dd>MYSQL_DATABASE</dd>
<dd>MYSQL_USER</dd>
<dd>MYSQL_PASSWORD</dd>
</dl>

## 個別に起動
ここまでの内容を踏まえて、以下の設定として個別に起動します。

* DBユーザー：wp_user
* DBパスワード：password
* DBルートパスワード：password
* データベース：wordpress
* Wordpressポート：80
* ホスト（AtomicHost）の公開ポート：8080

### MySql起動
-linkを利用する関係で、先にMySqlを起動します。

```
$ sudo docker run --name zum-mysql -v /home/vagrant/wordpress/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=password -e MYSQL_USER=wp_user -e MYSQL_PASSWORD=password -e MYSQL_DATABASE=wordpress -d mysql
```

### Wordpress起動

```
$ sudo docker run --name some2-wordpress --link zum-mysql:mysql -v /home/vagrant/wordpress/www/html:/var/www/html -p 8080:80 -d wordpress

$ sudo docker run --name zum-wordpress --link zum-mysql:mysql -p 8080:80 -e WORDPRESS_DB_USER=wp_user -e WORDPRESS_DB_PASSWORD=password -d wordpress

$ sudo docker ps   
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS                  NAMES
898de1e9a9dc        wordpress:latest    "/entrypoint.sh apac   51 seconds ago      Up 50 seconds       0.0.0.0:8080->80/tcp   zum-wordpress       
cd2ec87378a0        mysql:latest        "/entrypoint.sh mysq   12 minutes ago      Up 6 minutes        3306/tcp               zum-mysql 
```

こんな感じで起動完了

![スクリーンショット 2015-09-22 17.27.52.png](https://qiita-image-store.s3.amazonaws.com/0/93508/b90366ff-cb14-0ee0-b49f-f0a73f308dfa.png)

## 今後
これは実運用していきますので、運用面のチューニングなどこまめにやっていきたいとおもいます。
Weblogicの方も同じですが、ロギングや監視など順次対応予定ですので、其の都度こちらでも掲載していく予定です。