PhoenixをHeroku上で動かしてみた

ElixirのPhoenixをHeroku上で動かしてみました。久しぶりにheroku動かしたのですが、GitHub連携やDropbox連携も追加されたのですね。

環境

  • Erlang version
    • 17.5
  • Elixir
    • 1.0.4
  • Phoenix
    • 0.13.1

テンプレートプロジェクトの作成

Deployするプロジェクトは以下を参考に、簡単なサンプルプロジェクトにしました。

Herokuへのdeploy対応

Herokuへのdeployは、heroku-buildpack-elixirを使いました。

基本的にはここに書かれている手順を踏めば良いのですが、軽く手順を残しておきます。

elixir_buildpack.config を生成する

内容は以下です。

# Erlang version
erlang_version=17.5

# Elixir version
elixir_version=1.0.4

# Always rebuild from scratch on every deploy?
always_rebuild=true

# Export heroku config vars
config_vars_to_export=(DATABASE_URL)

Procfile の作成

内容は以下。

web: mix phoenix.server

Heroku側の設定

ひとまず、手軽にdev環境を稼働させたかったので以下の対応をしました。

1. dev環境の設定

$ heroku config:set MIX_ENV=dev

2. config/dev.exs を修正してポートをシステム依存にする

以下のような感じ。

config :hello_phoenix, HelloPhoenix.Endpoint,
  http: [port: {:system, "PORT"}],
  debug_errors: true,
  code_reloader: true,
  cache_static_lookup: false,
  watchers: [node: ["node_modules/brunch/bin/brunch", "watch"]]

3. DBの設定

HerokuのPostgreSQL Pluginを使い、usernameやpassword、databaseを作成します。

config :hello_phoenix, HelloPhoenix.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "phoenix_psql",
  password: System.get_env("DB_PASS"), # "postgres",
  database: "hello_phoenix_dev",
  size: 10 # The amount of database connections in the pool

passwordなんかの大事な情報は、Herokuの環境設定を活用しましょう。

4. Deploy

$ heroku create --buildpack "https://github.com/HashNuke/heroku-buildpack-elixir.git"
$ heroku config:set BUILDPACK_URL="https://github.com/HashNuke/heroku-buildpack-elixir.git"
$ git push heroku master 

接続

あとはHerokuのダイナモの数を調整して、アクセスできるようにします。


だいぶんお手軽にDeployできるようになりました。これから手を動かすぶんにはEC2やローカルで良さそうな気がしますが。

実施したリポジトリはこちら


追記: 2015/07/30

Phoenix 0.15のheroku deployを見てみると、 config/prod.secret.exs を消して config/prod.exs に統一することが必要みたいですね。
確かに、何もしないでdeployすると config/prod.secret.exs が無いというエラーが確認されます。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中