#はじめに
Flynn
Open PaaSとしてHerokuに似たものを探していて、FlynnとDeisというものがあることを知った。
FlynnでもDeisでもどちらもでもよかったのだけど、FlynnにDokkuの作者が関わっており、Dokkuの名前は聞いたことがあったのでFlynnの環境を一つ作ってみた。
Flynnの環境作成はわりと簡単にできたけど、手持ちのRailsアプリをデプロイするのに一苦労したので、メモ代わりにQiitaに投稿してみる。
#目次
- SSH公開鍵の登録
- アプリケーションの作成
- PostgreSQL用の設定が必要
- 環境変数
- rails_12factor
- flynnへのデプロイ
- rake db:migrate
SSH公開鍵の登録
gitでアプリをpushする所謂Herokuスタイルを実現するために、まずはSSH公開鍵の登録が必要。
flynn key add [<public-key-file>]
アプリケーションの作成
flynn create <app_name>
PostgreSQL用の設定が必要
Herokuを使っているとDB周りは自動で設定してくれるので気付かなかったけど、Flynnを使う場合はPostgreSQLの設定が必要。
FlynnにはPostgreSQLのインスタンスを作るコマンドがあるのでそれを使用する。
flynn resource add postgres
を実行して以下を編集
production:
adapter: postgresql
encoding: unicode
pool: 5
url: <%= ENV['DATABASE_URL'] %>
DATABASE_URLは以下のコマンドを実行して環境変数にセットする。
flynn env set DATABASE_URL=$(export $(flynn env | xargs); echo "postgres://$PGUSER:$PGPASSWORD@$PGHOST:5432/$PGDATABASE")
(実際は一行)
環境変数
前節のDATABASE_URLもそうだけど、環境変数の設定が必要。
- RAILS_ENV=production
- SECRET_KEY_BASE=
rake secret
で得られる値
あたりが必須であろうか。以下のように設定する。
flynn env set RAILS_ENV=production
rails_12factor
これもHeorkuの場合は自動でGemを追加してくれるので気付かなかったのだが、Flynnの場合は手動でGemfileに記載する必要がある。
rails_12factorをGemfileに記載していない場合Warningが出る。そしておそらくAsset Pipelineがうまく動かない。
flynnへのデプロイ
git push flynn master
rake db:migrate
これもHerokuの場合は自動ででやってくれるので気付かなかったのだが、Flynnの場合は手動で行う必要がある。といっても簡単にできる。
flynn run rake db:migrate