1. Qiita
  2. 投稿
  3. Rails

FlynnをHerokuの代替に使おうとしてはまったのでメモ

  • 7
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

はじめに

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 を実行して以下を編集

config/database.yml
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