なぜ?
社内システムは、なるべくクラウドの既製品を使うという方針でIT部を運営していますが、ちょっとしたバッチ処理、自動監視、データ転送・変換処理なんかは自分で開発したほうが早かったりします。
そういった処理を実現するために、社内サーバを用意するのは面倒なので、Herokuを使ってサクっと作ってしまおうということを繰り返してきた結果、なんとなくテンプレートのようなものができたので、ここに公開しておきます。
なんでDockerを使うの?
自分のMacの環境をできるだけ汚さないようにするためです。特にMacの場合はRubyの環境がmacOSのバージョンアップの度に大きく変わって、つらい思いをしたのでDockerでHeroku相当の環境を作成する方針を取っています。
開発環境
- 個人のMacbook(弊社はBYODを認めてます)
- OS X El Capitan (10.11.6)
- Docker for Mac(最近までは Docker Toolboxでした)
使い方
git@github.com:maloninc/quickherokuapp.git
cd quickherokuapp
rake
http://localhost:9292 へブラウザでアクセスすると下記のような画面が表示されます。
あとは、要件に応じて適宜、ソースコードを改修していきます。
テンプレートの構成
- Dockerfile
- Gemfile
- Rakefile
# 以降はSinatraウェブアプリケーションの構成
- app.rb
- configu.ru
- env
+ public
+ css
- app.css
+ js
- app.js
- resources.rb
+ views
- index.haml
Dockerfile
Herokuが公開しているcedar
スタックのイメージをFROM heroku/cedar:14
で呼び出して、rubyのbuildpackをインストールしています。
Gemfile
Sinatra + Datamapperのウェブアプリケーションを開発するために必要なGemを指定しています。Datamapperのデータベースは、ローカルの環境ではSQLiteで、本番環境ではPostgreSQLになるようにしています。
Rakefile
dockerコマンドを覚えられないので邪道ですが、以下の様なよく使う機能をタスクとして定義しています。
- ウェブアプリケーションをサーバとして起動: rake
- ジョブとしてとして起動: rake run_job
- シェルの起動: rake shell