オープンソースのPaaSソフトウェア CloudFoundry の技術情報やイベント告知などを掲載します

2015-07-31

jqplay を Cloud Foundry で動かす

「Cloud Foundry 百日行」第41日目は,軽量 JSON パーサーである「jq」をブラウザ上で実行できる jqplay です。
ブラウザ上で簡単にjsonから必要な情報を抜き出すことができるため、例えば長大なjsonを整形したいが、パスワード等の秘匿情報が入っているので、他者が管理するサービスは使いたくないような場合などに、お持ちのCloud Foundry環境へPushして頂くと便利です。

基本情報

手順の概要は以下の通りです。

  • 1) ソースコードの取得
  • 2) アプリの起動
  • 3) 動作確認

1. ソースコードの取得

$ git clone https://github.com/jingweno/jqplay.git
$ cd jqplay/
jqplay$ ls
assets  bower.json  Gruntfile.js  LICENSE.md  package.json  public     script  tasks
bin     Godeps      jq            main.go     Procfile      README.md  server

README.md を確認すると、 GO と Node の環境が必要だよ、と書いてあるので、今回は heroku-buildpack-multi を使ってデプロイを行っていきます。

2. アプリの起動

デプロイ用ファイルの作成

デプロイのために manifest.yml と .buildpacks (heroku-buildpack-multi用の設定ファイル) を作成します。

まずは manifest.yml 。
buildpack: には、 heroku-buildpack-multi を指定します。
command: には、 jqplay が用意する構築用スクリプトから必要な処理を抜き出して指定しています。
また、アプリの起動に時間がかかる場合があるため、 timeout: を最大の180秒に設定しておきます。

jqplay$ vi manifest.yml

---
applications:
- name: jqplay-100
  buildpack: https://github.com/ddollar/heroku-buildpack-multi.git
  command: ./script/bootstrap;grunt build;./bin/jqplay
  timeout: 180

次に、 .buildpacks に、GO と Node の buildpack を設定します。

jqplay$ vi .buildpacks
https://github.com/cloudfoundry/nodejs-buildpack.git
https://github.com/cloudfoundry/go-buildpack.git

アプリのプッシュ

ファイルの作成が完了したら、アプリをデプロイします。

jqplay$ cf push
:
1 of 1 instances running

App started


OK

App jqplay-100 was started using this command `./script/bootstrap;grunt build;./bin/jqplay`

Showing health and status for app jqplay-100 in org horiu-jn / space 100nichi as horiu-jn...
OK

requested state: started
instances: 1/1
usage: 512M x 1 instances
urls: jqplay-100.10.244.0.34.xip.io
last uploaded: Wed Jul 22 07:48:52 UTC 2015
stack: cflinuxfs2
buildpack: https://github.com/ddollar/heroku-buildpack-multi.git

     state     since                    cpu    memory         disk      details
#0   running   2015-07-22 04:50:54 PM   0.0%   5.7M of 512M   0 of 1G

成功しました。

3. 動作確認

ブラウザからアプリにアクセスします。

動作確認のため、
“Filter” フィールドに

.color[1]

“Jason” フィールドに

{
  "color":[
    {"red":156,"green":167,"red":22,"name":"sky blue"},
    {"red":231,"green":225,"red":143,"name":"cream"},
    {"red":99,"green":124,"red":53,"name":"olive"}
  ]
}

を設定すると、 “Result” フィールドに cream のレコードだけ表示されます。

今回使用したソフトウェア



投稿者:NTTソフトウェア株式会社 堀内 純