はじめに
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.config
と Procfile
を作成する。
私はそれぞれ以下の内容で作成した。
# 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"
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_BASE
と DATABASE_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
で生成される HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE
を SECRET_KEY_BASE
環境変数に設定する。
$ mix phoenix.gen.secret
HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE
$ heroku config:set SECRET_KEY_BASE="HOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGEHOGE"
heroku にあげる
ここまで準備できたら後は git push heroku master
すれば heroku 上で起動しているのが確認できる。