Phoenix を heroku で動かす

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

はじめに

Phoenix v0.17.0 で検証しています。公式のやり方に沿うのが最も新しく確実な情報です。

Phoenix でサンプルアプリを作る

Phoenix のインストールはこちらを。
Phoenix の Up And Running に沿って、以下を実行する(記事を書いている時点で v0.17.0 が Phoenix の最新版)。

$ mix archive.install https://github.com/phoenixframework/phoenix/releases/download/v0.17.0/phoenix_new-0.17.0.ez
$ mix phoenix.new /path/to/scaffold/sample_app
$ cd sample_app
$ mix phoenix.server

一連のコマンドが上手くいけば localhost:4000 にアプリが立ち上がる。

heroku-buildpack-elixir で heroku 用の設定を作る

heroku-buildpack-elixir はいくつかあるので注意。https://github.com/HashNuke/heroku-buildpack-elixir これを使う。
buildpack の指定を以下のようにし、heroku アプリを作成する。

$ heroku create --buildpack "https://github.com/HashNuke/heroku-buildpack-elixir.git"

https://github.com/HashNuke/heroku-buildpack-elixir の README に沿って、elixir_buildpack.configProcfile を作成する。
私はそれぞれ以下の内容で作成した。

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=false

# Export heroku config vars
config_vars_to_export=(DATABASE_URL)

# A command to run right after compiling the app
post_compile="pwd"
Procfile
web: mix phoenix.server

heroku-buildpack-phoenix-static で assets 用 buildpack を設定する

これを設定することでデプロイ前に static ファイルをビルドしてくれる。

$ heroku buildpacks:add https://github.com/gjaldon/heroku-buildpack-phoenix-static.git

config/prod.exs の変更

SECRET_KEY_BASEDATABASE_URL 環境変数を設定するために変更します。

--- a/config/prod.exs
+++ b/config/prod.exs
@@ -56,6 +56,14 @@ config :logger, level: :info
 #     config :sample_app, SampleApp.Endpoint, server: true
 #

-# Finally import the config/prod.secret.exs
-# which should be versioned separately.
-import_config "prod.secret.exs"
+# In this file, we keep production configuration that
+# you likely want to automate and keep it away from
+# your version control system.
+config :sample_app, SampleApp.Endpoint,
+  secret_key_base: System.get_env("SECRET_KEY_BASE")
+
+# Configure your database
+config :sample_app, SampleApp.Repo,
+  adapter: Ecto.Adapters.Postgres,
+  url: System.get_env("DATABASE_URL"),
+  pool_size: 20

環境変数を heroku に設定する

以下の通り。mix phoenix.gen.secret で生成される HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGESECRET_KEY_BASE 環境変数に設定する。

$ mix phoenix.gen.secret
HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE
$ heroku config:set SECRET_KEY_BASE="HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE"

heroku にあげる

ここまで準備できたら後は git push heroku master すれば heroku 上で起動しているのが確認できる。

SEE ALSO