1. TOPTOP
  2. Webサービス

Wockerに複数のWordPress開発環境を構築する方法を考えてみた

|

Wapuu

Twitter APIから取得したツイートのテキストや画像を、WordPressのデータベースに挿入して、テーマ(twentyfifteenとか)に表示させるサービスをつくりたいと考えています。

複数のWordPress環境がほしい

そのためにはWordPressの構造を知る必要があります。ざっと思いついだけでもこんな感じ↓また実際にコアファイルやデータベースに触ることになるでしょう。

  • ライブラリのTwitterOAuthをどこに配置するか
  • Linuxのcrontabのような定期実行コマンドはどうするか
  • APIで取得したデータをMySQLにどうやって挿入するか

ということは、単一のWordPressの開発環境を構築するだけでなく、複数の開発環境を構築しなければなりません。おそらく開発をしているうちに、何回も失敗するでしょうから。

問題はいかに早く失敗した環境を捨てて、新しい環境を作成できるかです。

単一の開発環境と複数の開発環境

WordPressの開発環境は、DockerベースのWocker(新しいタブで開く)を利用します。

単一のWordPress開発環境

wocker_wp1

WockerによるもっともオーソドックスなWordPress開発環境です。テーマを編集するという目的であれば、wockerディレクトリ内にあるWordPressを構成するフォルダ群に、子テーマか新しいテーマを入れるだけでよいでしょう。containerが一つあればいけるはず(Container 1)。

複数のWordPress開発環境

wocker_wp2

ですが、自分のやりたいことは複数の開発環境を構築することです。複数の開発環境でも、最終的にひとつのcontainerで、http://wocker.devの表示ができれば良いと考えています。こんなイメージです。

  • ダメだと思ったらコンテナごと削除する(Conatainer1)
  • ダメだと思っても残しておいて、http://wocker.devで表示させない(Conatainer2)
  • 使えるので生かしておいて、http://wocker.devで表示させる(Conatainer3)

それぞれのコンテナに「スイッチ」を付けておいて、必要に応じて「ON・OFF」を切り替える、またそれぞれに「自爆装置」をつけておくといった感じでしょうか?

wockerディレクトリを削除する方法について

wocker_wp3

単一とか複数とかコンテナの数を考えるのではなく、開発環境が不要になったときは、wockerディレクトリごと削除してしまうという考え方もあります。

GitHubからwockerリポジトリをcloneしたときに、vagrant内で作成されるwockerディレクトリを、「アカン」と思ったときに丸ごとつぶしてしまうという手もありでしょう。

ただこの手はあまり使いたくありません。containerが使い分けられると、開発環境内のコードを比較することができるからです。

必要と思われるwockerコマンド

ここまでWordPressの開発環境について、考えていることを述べてきました。あとは実行あるのみ!

…なんですが、コンテナの操作について、いまいち自信がありません。自分がしたいことを考えると、次のコマンドが必要になると思います。

1.containerのストップ

core@wocker ~ $ wocker stop CONTAINER

2.containerの再スタート

core@wocker ~ $ wocker start CONTAINER

3.containerの削除

core@wocker ~ $ wocker rm CONTAINER

4.古いcontainerを維持しつつ新しいcontainerを作成

5.古いcontainerをストップさせて新しいcontainerをスタート

このうち、4と5がよく分かりません。さぁどうしたものか…。

追記 2015年8月19日

記事を公開したあとに、記事の内容についていくつかアドバイスをいただきました。以下のとおり加筆をいたします。

4.古いcontainerを維持しつつ新しいcontainerを作成

core@wocker ~ $ wocker run --name NEWCONTAINER

5.古いcontainerをストップさせて新しいcontainerをスタート

(NEWCONTAINERが出来上がっている前提)

core@wocker ~ $ wocker stop CONTAINER
core@wocker ~ $ wocker start NEWCONTAINER

関係者のみなさま、アドバイスありがとうございます!

〔参考サイト〕