「Cloud Foundry 百日行」第73日目は、かの有名なパズルゲーム 2048 です。
過去の記事(※)では何度かこのゲームのクローンをご紹介しましたが本家本元を書いていなかったので今更ではありますが記事化してみます。
※ 過去の記事
基本情報
-
その他参考情報
2048 – ハマると危険なパズルゲーム
今回の手順の概要は以下の通りです。
- 1) ソースコードの入手
- 2) Cloud Foundry上へのデプロイ
- 3) 動作検証
- おまけ
1. ソースコードの入手
$ git clone https://github.com/gabrielecirulli/2048
$ cd 2048/
2048$ ls
CONTRIBUTING.md favicon.ico index.html js LICENSE.txt meta Rakefile README.md style
いつも通りGithubからソースコードをcloneしてきます。
2. Cloud Foundry上へのデプロイ
アプリの中身はHTMLファイルとJavascriptファイル程度なので、おなじみStaticfileでデプロイができてしまいそうです。
規模も小さめのアプリなのでmemoryなども節約しつつデプロイしてみましょう。
2048$ cf push 2048 -b staticfile_buildpack -m 16M -k 128M
(一部略)
-----> Uploading droplet (4.0M)
1 of 1 instances running
App started
OK
App 2048 was started using this command `sh boot.sh`
Showing health and status for app 2048 in org ukaji / space default as ukaji...
OK
requested state: started
instances: 1/1
usage: 16M x 1 instances
urls: 2048.10.244.0.34.xip.io
last uploaded: Mon Sep 7 08:38:20 UTC 2015
stack: cflinuxfs2
buildpack: staticfile_buildpack
state since cpu memory disk details
#0 running 2015-09-07 05:38:33 PM 0.0% 5M of 16M 0 of 128M
成功しました。
3. 動作検証
発行されたURLにアクセスします。
無事動作しています。
おまけ
manifest.ymlの自動生成
これで記事が終わってしまうのも味気ないのでcfコマンドの一つである cf create-app-manifest
についてご紹介します。
今までの記事でも何度か登場したmanifestファイルは一度作ってしまえばとても便利なデプロイ設定ファイルですが、アプリを動かせる正解のmanifestファイルを一発で書くのは中々に難しいものです。
実際にはコマンドライン上での試行錯誤の結果、やっと必要なオプションが判明したのでその結果をmanifestファイルに纏めておく、なんていう作られ方をすることもあると思います。
というわけで今回紹介するコマンド cf create-app-manifest
は、過去に成功したデプロイ履歴からmanifestファイルを自動生成するコマンドです。
先ほどデプロイに成功したアプリで実際にやってみましょう。
2048$ cf create-app-manifest 2048
Creating an app manifest from current settings of app 2048 ...
OK
Manifest file created successfully at ./2048_manifest.yml
2048$ ls
2048_manifest.yml favicon.ico js meta README.md
CONTRIBUTING.md index.html LICENSE.txt Rakefile style
2048_manifest.yml
というファイルが作られています。
中身を見てみると、
2048$ cat 2048_manifest.yml
---
applications:
- name: 2048
memory: 16M
instances: 1
buildpack: staticfile_buildpack
host: 2048
domain: 10.244.0.34.xip.io
先ほど成功したデプロイの再現が可能なmanifestファイルができています。
あとは、
2048$ mv 2048_manifest.yml manifest.yml
としておけば次回からは cf push
だけでデプロイができるようになりますね。
今回使用したソフトウェア
- cf-release (v211)
https://github.com/cloudfoundry/cf-release/tree/v211
( https://github.com/cloudfoundry/cf-release/tree/2121dc6405e0f036efa4dba963f7f49b07e76ffa ) - bosh-lite
https://github.com/cloudfoundry/bosh-lite/tree/552dc6869600c5350eb7ffb4fb9c9c5e79e3889d - CF CLI (v6.12.0-8c65bbd-2015-06-30T00:10:31+00:00)
https://github.com/cloudfoundry/cli/releases/tag/v6.12.0 - 2048
https://github.com/gabrielecirulli/2048/tree/76336e86ee9975976141677bc36d6e2332e256bc