VCCWとWockerの比較。wordpress開発の新しい選び方。
.2015/05/18、個人的にどっぷりな、wordpressプラグイン本の著者さんがセッションするということもあり、第41回 WordBench 大阪 「VCCW vs Wocker」に行った議事録と感想。
結論からいって、Dockerについてかなり理解が深まった。
きっかけを与えてくれたWockerの作者のKiteさんにはただただ感謝。
触発されて、今日ずっとDockerfileの書き方しらべてた。
あとは、TDDの必要性だとか、CIの必要性だとかへの理解が深まり、ついでに、OSSの貢献の方法というか考え方だとか、いろいろと参考になった。
本題のテーマはvccw vs wocker。つまり仮想環境を利用しての開発環境についてのセッション。
そのまえに、まずDockerについて触れておく。
Dockerのメモ
- OSはホストOSのものを全コンテナで共有する。そのため一つ一つのコンテナは軽量。
- ファイルはもちろんデータベースもコンテナ毎に異なる。
- Dockerhubとgithubとが連携し、自動でビルドテストできる。OSSでは無料でDockerhubを利用できる。
- キャッシュを上手く動作させなければ壊れる?といったことを聞いていたが、そんなことはない。
- 安定しない時もある(Windowsは不安定?)
画像はDockerのサイトより。
VCCWとWockerの比較
Dockerについてざっくりわかったところで、本題。
vccwとwockerを比較してみる。はそもそも用途が違う。一言で用途を表すと次のとなる。
もう少し具体的に個人的な意見もふまえていくと、次のような感じ。
- VCCW => 機能面の開発用
- どちらかと言うとエンジニア向き。
- function.phpにあれこれつめ込むものではなく、テーマを切り替えてサイトが壊れる構造になってしまうテーマ設計は間違いであり、機能面は全てプラグインとして提供するべき。さらには、プラグインを切ったとしても、サイトが壊れないようにすべき。そのためのVCCW。
- プラグイン作成のためのツール群がいろいろと含められている。
- コア開発の場合はVCCWではなく、テストフレームワーク付いてるvvvを使わないといけない。
- VCCWが紹介される際、WordMoveが便利として取り上げられやすいが、コンセプトは要約のとおりプラグイン設計のためのものであり、WordMoveに注力されているわけではない。
- 基本的に1サイト1VMとなるため、必要となる容量が大きくなる。複数サイトを作りたい時で2つ以上のVMを持ちたくない場合の解決方法は次の2パターン(VCCWの手軽さを享受できなくなる?)
- VirtualHost設定をvagrant内で作る。
- WordMoveを活用し、都度Pull/Pushを繰り返す。
- Wocker => テーマデザイン面の開発重視
- どちらかと言うとデザイナー向き。
- 気軽に簡単にテーマを開発するためのもの。
- 複数サイトを開発する際はコンテナをサイト数だけ作成すればよい。MAMP並の手軽さがある。また起動が数秒と早い。
- vagrant内にDockerコンテナを保存するため、WP-CLIを使ったりmysqlをコマンドラインから操作する場合には、Vagrant内に入る→コンテナに入る。の二重の手間がかかる。
共通点
- wordpressで作業する場合、DBを直接操作するようなケースがあまりないため、phpmyadminは不要であり同梱されていない。
- WP-CLI両環境とも含められている。やっぱり便利なんだ。DBのdumpもWP-CLIで可能である。
それぞれの活用イメージ
プラグインをまずvccwにて開発し、そこで作ったプラグインをwocker内に導入する。
もしプラグイン作成の必要性がない小規模サイトを作っているのであればwockerで直接テーマに入るのが良さ気。
・現在はWordMoveがwockerに標準で入っていない。
WordMoveは便利なので、個人的に導入させたくDockerfileを作成方法を模索中。できればまたポストしようと思う。
WordMoveまでできればかなりデプロイまで早くなるのがみえる。
最後にwockerコマンドの一部を。コマンドのほとんどはDockerコマンドのラッパーとなっている。
$ wocker ps # 起動中のdockerコンテナを表示 $ wocker ps -a # 停止しているdockerコンテナの一覧も含め表示 $ wocker exec -it [コンテナ名] bash # dockerコンテナの中に入る。 $ wocker run --name [コンテナ名] # wockerコンテナを新規作成 $ wocker start [コンテナ名] # wockerコンテナを起動 $ wocker stop [コンテナ名] # wockerコンテナを停止
ちなみに今回の写真はDoor keeperのページのものを利用させてもらいました。
参考にしたURL
- VCCW – A WordPress development environment.
- Wocker: Docker-based rapid development environment of WordPress. IT TAKES JUST 3 SECONDS TO CREATE A NEW ONE!
- Wocker Commands | Wocker
- What Is Docker? An open platform for distributed apps
- スライド:VCCW – Vagrant based WordPress development environment
- スライド:Wocker @WordBench Osaka No.41