本日の第6回「Cloud Foundry 百日行」は、-2048です。
これも第5回と同じくデプロイが簡単なHTML+JavaScriptのアプリです。
-2048基本情報
-
公式サイト
undeadpenguin.com/negative-2048/
(この記事を執筆している2015/06/05現在はアクセスが出来ないようです)
デプロイ
手順
- 0) 準備
- 1) アプリの起動
- 2) 動作確認
0.準備
まずはソースコードの取得から。
ディレクトリ名にマイナス記号が入っていると少々厄介なのでnegative2048
に名前を変更しながらgit clone
しておきましょう。
$ git clone https://github.com/LegoMaster616/-2048 negative2048
$ cd negative2048
negative2048$ ls
CONTRIBUTING.md favicon.ico index.html js LICENSE.txt meta Rakefile README.md style
主な中身はindex.htmlとjs/ディレクトリなので、前回と同様にstaticfile-buildpackにHTTPサーバを立ててもらえばアプリは動いてくれそうです。
1.アプリの起動
では早速Cloud Foundry上にアプリをデプロイしてみましょう。
前回と同様に $ cf push negative2048 -b https://github.com/cloudfoundry/staticfile-buildpack
で方を付けてしまっても良いのですが、折角なので前にご紹介したmanifestファイルを再び使ってみます。
アプリケーションの作りがほぼ同じなので同じようなmanifestファイルでデプロイできるはずです。
negative2048$ vi manifest.yml
---
applications:
- name: negative2048
buildpack: https://github.com/cloudfoundry/staticfile-buildpack
ここまでくれば残す作業はcf push
だけです。アプリをデプロイしましょう。
negative2048$ cf push
Using manifest file /home/ukaji/workspace/_old/negative2048/manifest.yml
Creating app negative2048 in org ukaji / space default as ukaji...
OK
Creating route negative2048.10.244.0.34.xip.io...
OK
Binding negative2048.10.244.0.34.xip.io to negative2048...
OK
Uploading negative2048...
Uploading app files from: /home/ukaji/workspace/_old/negative2048
Uploading 239K, 32 files
Done uploading
OK
Starting app negative2048 in org ukaji / space default as ukaji...
-----> Downloaded app package (244K)
Cloning into '/tmp/buildpacks/staticfile-buildpack'...
Submodule 'compile-extensions' (https://github.com/cloudfoundry-incubator/compile-extensions.git) registered for path 'compile-extensions'
Cloning into 'compile-extensions'...
Submodule path 'compile-extensions': checked out '0b1eb13f9a747494b0abac8c665bb556cd07c749'
grep: Staticfile: No such file or directory
-----> Using root folder
-----> Copying project files into public/
-----> Setting up nginx
grep: Staticfile: No such file or directory
-----> Uploading droplet (2.7M)
1 of 1 instances running
App started
OK
App negative2048 was started using this command `sh boot.sh`
Showing health and status for app negative2048 in org ukaji / space default as ukaji...
OK
requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: negative2048.10.244.0.34.xip.io
last uploaded: Thu Jun 11 00:37:00 +0000 2015
stack: lucid64
state since cpu memory disk details
#0 running 2015-06-11 09:37:17 AM 0.0% 2.7M of 256M 0 of 1G
2.動作確認
デプロイが無事終了したら動作確認です。ブラウザでアクセスをしてみましょう。
動きました。
このゲームも前回と同じく2048ゲームのクローンです。
操作方法は基本通りなのですが、少々追加ルールがややこしいです。
- 追加ルール1.プラスとマイナスの同じ数字が衝突すると0のタイルになる
- 追加ルール2.0のタイルは他のタイルの数字を変更することなくマージされる
ちなみに勝利条件は2048、もしくは-2048のタイルを作ることなのですが、得点の稼ぎ方なども考えだすと相当にややこしいゲームです。
おまけ
アプリケーションが起動するときに表示されるこのステータス画面、
(一部略)
Showing health and status for app negative2048 in org ukaji / space default as ukaji...
OK
requested state: started
instances: 1/1
usage: 256M x 1 instances
urls: negative2048.10.244.0.34.xip.io
last uploaded: Mon Jun 8 05:52:09 +0000 2015
stack: lucid64
state since cpu memory disk details
#0 running 2015-06-08 02:52:27 PM 0.0% 2.8M of 256M 0 of 1G
これの一番下をご覧になってお気づきの方もいらっしゃるかもしれません。
「メモリ2.8Mのアプリに256M割り振っちゃうのはちょっと無駄じゃないかな?」
こんなことを考えたとしましょう。
実はこの
memory
2.8M of 256M
の部分、「このアプリは割当てられた256Mのメモリのうち、2.8Mを使用中。」という意味です。
確かに数Mのメモリで動いてくれるアプリケーションに256Mも用意してあげるのは少々もったいないので、もう少し適切な値を割り振りたいものです。
さて、メモリなどのリソースの量についても、アプリ起動コマンドのオプションで解決することができます。
今回のアプリケーションで試してみましょう。
negative2048$ cf push negative2048 -b https://github.com/cloudfoundry/staticfile-buildpack -m 4M -k 8M
(一部略)
requested state: started
instances: 1/1
usage: 4M x 1 instances
urls: negative2048.10.244.0.34.xip.io
last uploaded: Mon Jun 8 06:13:16 +0000 2015
stack: lucid64
state since cpu memory disk details
#0 running 2015-06-08 03:13:55 PM 0.0% 2.4M of 4M 0 of 8M
ここでは-m
オプションによってメモリ量を指定、ついでに−k
オプションで使用ディスク量の指定を行ってみました。
最初のデプロイ時より無駄が少なくなっているのがわかります。
もちろんこれらの起動オプションもmanifestファイル内に吸収し、起動コマンドをcf push
にまとめることが可能です。
manifestファイルは下の通りです。
negative2048$ cat manifest.yml
---
applications:
- name: negative2048
buildpack: https://github.com/cloudfoundry/staticfile-buildpack
memory: 4M
disk_quota: 8M
今回使用した環境
- cf-release (v194)
https://github.com/cloudfoundry/cf-release/tree/v194
( https://github.com/cloudfoundry/cf-release/tree/345a8b3e1ea0005a3e9fced13f0bf6fa6f7ad981 ) - bosh-lite
https://github.com/cloudfoundry/bosh-lite/tree/01db9da7b4122f7d02858d92e0fe938e91256649 - CF CLI (v6.11.3-cebadc9-2015-05-20T19:00:58+00:00)
https://github.com/cloudfoundry/cli/releases/tag/v6.11.3 - -2048
https://github.com/LegoMaster616/-2048/tree/4a25cbc3a1f6291f6704459f8d763cd3e8108be2