LoginSignup
22
3

More than 1 year has passed since last update.

次世代Heroku?!renderにPhoenix1.6アプリをデプロイしてみる(DB無し)

Last updated at Posted at 2022-09-02

render is 何

renderはGitHub、GitLabのリポジトリからデプロイできるPaaSです。

今回はPhoenixアプリをデプロイしたいのでWeb Serviceを作成しますが、
他にStatic Site(Reactなど)、Background Workers(Celery、Sidekiqなど)、Cron Jobs、
DBはPostgreSQL、Redisが作成できます。

Freeプランがあるので、今回はそちらを使っていきます。

Phoenixアプリを作成する

今回は公式ドキュメントに合わせてDB無しのPhoenixアプリを作成します。
ドキュメントがPhoenix1.6に対応していないようなので、少しアレンジしていきます。

Phoenixアプリの作成

$ mix phx.new phoenix_hello --no-ecto

configファイルを編集する

config/prod.exs
config :phoenix_hello, PhoenixHelloWeb.Endpoint,
  url: [host: System.get_env("RENDER_EXTERNAL_HOSTNAME") || "localhost", port: 80], # <- 追記
  cache_static_manifest: "priv/static/cache_manifest.json"
config/runtime.exs
# if をコメントアウト
# if System.get_env("PHX_SERVER") do
  config :phoenix_hello, PhoenixHelloWeb.Endpoint, server: true
# end

  

# host = System.get_env("PHX_HOST") || "example.com"
# 今回はrender側で発行されるドメインを使うので、こちらの環境変数を使う
host = System.get_env("RENDER_EXTERNAL_HOSTNAME") || "exsample.com"

※Phoenix v1.6で、config/prod.secret.exsconfig/release.exs は、 config/runtime.exsに変わりました。

build.shスクリプトを追加

renderはインスタンス起動時にビルドコマンドが指定できます。
そのため、build.shスクリプトをルートディレクトリに新規作成します。

build.sh
#!/usr/bin/env bash
# exit on error
set -o errexit

# Initial setup
mix deps.get --only prod
MIX_ENV=prod mix compile

# Compile assets
MIX_ENV=prod mix assets.deploy

# Build the release and overwrite the existing release directory
MIX_ENV=prod mix release --overwrite

configファイルの更新とbuild.shの追加ができたら、GitHubにリポジトリを作成し、git pushしましょう。

renderにデプロイ

アカウント作成

スクリーンショット 2022-08-31 10.49.30.png

GET STARTEDボタンからサインアップしましょう。

Webサービスの作成

ダッシュボードに移動したら、今回はPhoenixを使うためWebサービスを作成しましょう。

スクリーンショット 2022-09-01 7.25.42.png

GitHubと接続する

GitHubのデプロイしたいリポジトリを選択しましょう。

Webサービスの設定(新規作成)

作成するWebサービスの設定をしていきます。

Environment、Build Command、Start Commandを指定する

スクリーンショット 2022-09-02 12.59.25.png

Name : 任意の名前
Environment : Elixir
Region : 任意
Branch : 任意
Build Command : ./build.sh
Start Command : _build/prod/rel/phoenix_hello/bin/phoenix_hello start

プランの指定

スクリーンショット 2022-09-02 12.59.45.png

プランは今回はFreeプランを使用します。

環境変数の指定

環境変数を追加します。Advancedをクリックすると入力フォームが表示されます。

スクリーンショット 2022-09-02 13.10.58.png

ELIXIR_VERSION : 1.13.4
SECRET_KEY_BASE : ローカルでmix phx.gen.secretを実行した結果を指定する

Elixirのバージョン指定が無い場合は古いバージョンで実行されるので、バージョン指定は必ず行いましょう。

Create Web Service

Create Web Serviceボタンをクリック。
デプロイが実行されます。5〜10分くらいかかります。

デプロイが終わったら

デプロイが終わったら、ステータスが「Live」に変わります。

スクリーンショット 2022-09-02 13.32.57.png

ウェブサービス名の下にリンクにアクセスし、反映されたか確認してみましょう。

スクリーンショット 2022-09-02 13.36.49.png

やったね!デプロイされました:clap::clap::clap:

最後に

mix compilemix releaseを使ったビルドスクリプトをユーザーに用意させるPaaSは初めて見たので面白かったです。

renderは、PRレビュー環境などHerokuにあるような便利な機能があるので、今度も調べていきたいです:blush:

22
3
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
3