wocker 使ってみた感レポ


workerでもなくwokerでもなくwockerです。

wockerでWP開発が劇的に楽になるという話を聞いて使ってみました。すっごいいい子です。

[http://wckr.github.io/](http://wckr.github.io/)にあるような感じで導入は凄くシンプル

````
$ vagrant plugin install vagrant-hostsupdater

$ git clone https://github.com/wckr/wocker.git && cd wocker
$ vagrant up
````

`http://wocker.dev`でサイトが確認可能。

`http://wocker.dev/wp-admin/`で管理画面が確認可能。
(ログインパスワードは admin/admin)

## 概要

wockerは複数のwordpressを`コンテナ`と呼ばれるまとまりで扱い、
複数のWordpress環境を瞬時に切り替えたりできるシステム。

`vagrant`で立ち上げた仮想環境上に複数のwordpressコンテナを配置し、
内部で特定のコンテナを立ち上げ、Wordpressとしてブラウザから確認することが出来る。

## コンテナの管理

デフォルトでは`wocker`という名前のコンテナが走っている。

`vagrant ssh`でvagrant仮想環境に入ると、CoreOSのマシンがあり、`wocker`コマンドを利用する事ができる。

````
core@wocker ~ $ wocker 
Usage: wocker COMMAND

Commands:
    destroy                                     Force remove all containers and related files.
    kill CONTAINER                              Kill a running container using SIGKILL or a specified signal.
    rm [-f|--force] CONTAINER [CONTAINER...]    Remove one or more containers.
                                                  [-f, --force]  Force the removal of a running container (uses SIGKILL)
    run [--name=""] [IMAGE]                     Run a new container.
                                                  Default docker image: wocker/wocker:latest
    start CONTAINER                             Restart a stopped container.
    stop CONTAINER                              Stop a running container by sending SIGTERM and then SIGKILL after a grace period.
    update                                      Update Wocker to the latest version.
    version | --version | -v                    Show the Wocker version information.
````

### コンテナの停止

````
core@wocker ~ $ wocker stop {CONTAINER_NAME}
````

### コンテナの起動

````
core@wocker ~ $ wocker start {CONTAINER_NAME}
````

複数のwockerコンテナを同時に立ち上げることは出来ない。
必ず実行中の物をstopしてからstartすること。

### コンテナの作成

````
core@wocker ~ $ wocker run --name="{CONTAINER_NAME}"
````

既にあるコンテナの名前は使えない。
コンテナは作成と同時に起動するため、こちらもコンテナをstopしてから。


### コンテナの削除

````
core@wocker ~ $ wocker rm {CONTAINER_NAME} 
````

`destory`で全部消せます。こういうコマンド怖い。

### 現在実行中のコンテナを取る

docker コマンド叩く。

````
core@wocker ~ $ docker ps 
````

NAMEの所に、コンテナ名が出る。

### 現在実行中のコンテナに入る

````
core@wocker ~ $ docker exec -it {CONTAINER_NAME} bash 
````

`it`がなんなのかはよく分かってません。


## Wordpressのカスタマイズ

wockerのディレクトリ内 `data` ディレクトリに、コンテナ名でwordpressファイルが保存されている。
vagrantでファイル同期が取られているので、そこを触れば開発確認とかできる模様。

なお、通常コンテナにはWP CLIが入ってるのでコンテナに入れば`wp`コマンドが使える。
プラグインのインストールや設定の変更などをシェルスクリプトベースで記述する事が可能。
`root`で入る形になるので`--allow-root`オプションを忘れずに

`wp`コマンドについては、[http://wp-cli.org/](http://wp-cli.org/)を参考に。

### デフォルトコンテナの編集

デフォルトは`wocker/wocker:latest`が使われる。
https://registry.hub.docker.com/u/wocker/wocker/


中身は非常にシンプル。runコマンドに引数でコンテナ指定もできるっぽいのでそれでなんとかなる?
必要になったら試してみたい。

## わからなかったこと

wockerコマンドは基本的な部分を提供してくれるだけなので、docker力がある程度あったほうが良さそう。
自分はdocker力 皆無なので色々勉強しなきゃなぁと思いました。

- mysql workbench とかで DB覗き見る方法(docker execしなきゃ…とか書いてたから無理?)
- このVAGRANTにvangrant ssh以外でssh入る方法
- stop/killの違い

wockerコマンドはdockerコマンドのラッパーになってるみたいで、
`wocker ps`とかしても`docker ps`の結果が得られるっぽい(詳しく全てのdockerコマンド全てを叩いてないので詳細は不明)。  
  
ただやっぱりwocker/dockerコマンドの取り扱いは、docker出来ない系の人にはオススメしがたい要因になっちゃいそうなので、
基本的な操作系が全部`wocker --help`にまとまってると便利だなぁとは思った。
具体的にはwocker側に下記あたりのコマンドがあったらいいなぁと思いました。

- wocker info : 引数なしで現在実行中のコンテナ名を返す
- wocker create : 現在実行中のコンテナを止めて、新規コンテナを作成する。
- wocker start/stop の引数省略版 
- wocker exec : 引数なしで現在実行中のコンテナに入る。引数付きでコンテナをスイッチして入る。

5.17 追記 

wockerよく使うコマンド集、がwockerの公式サイトにUPされました!! ありがとうございます!!
docker力なくても一通りの事は、何とかなりそう!!

http://wckr.github.io/commands/