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

2015-10-06

2048 を Cloud Foundry で動かす

「Cloud Foundry 百日行」第73日目は、かの有名なパズルゲーム 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 だけでデプロイができるようになりますね。

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