どうやら無料でrailsをリリースできるらしい
herokuやらfly.ioやら元々無料だったけどなんだかんだ今は有料になっている中、どうやらkoyebは無料で出来るそうだ。
という事でリリース方法をざっくりまとめてみた。
本記事の環境
- rails 7.1.5 (rubyはv3.3を使ってますがここは何でも良さそう)
- githubにアプリのレポジトリがある。
- 環境変数は
.env
で管理している。
の2点です。
rails 6台はwepacker関連のビルドで沼にハマったので断念。。。
nodeなしでアプリ作成ができて、アプリ作成時にリリース用のDockerfileを自動で作成してくれるrails v7以降でのみ挙動確認済みです。
手順
1.Githubに開発してるアプリをpushする
レポジトリにアプリをpushしてくれていたら大丈夫です。
細かい説明は省いてますが、手順を書いたので置いておきます
koyebはブランチ名を選択してリリースできるので便利ですね。
2.Gemfileの編集
以下のように変更をしてください。
#以下のようにsqlite3の記述をコメントアウト(-は書かなくていい)
# Use sqlite3 as the database for Active Record
- # gem 'sqlite3', '~> 1.4'
# 先ほどコメントアウトしたsqlite3を:development, :test doの中に追記(+は書かなくていい)
group :development, :test do
+ gem 'sqlite3', '~> 1.4'
# See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
gem "debug", platforms: %i[ mri windows ]
end
# 一番下に以下を追記(+は書かない)
+group :production do
+ gem "pg"
+end
-
gem 'sqlite3', '~> 1.4'
をコメントアウトしてgroup :development, :test do
の中に移動 -
gem "pg"
を追記(group :production do ~ end
の中に書く、なければ上記のように新しく追記する)
Gem編集後以下のコマンドを入力
bundle install
たまに以下のようなエラーが出るので事前にコマンドを実行。
Your bundle only supports platforms ["arm64-darwin-21"] but your local platform
is x86_64-linux. Add the current platform to the lockfile withbundle lock --add-platform x86_64-linux
and try again.
bundle lock --add-platform x86_64-linux
3.database.ymlの編集
koyebではsqlite3ではなくPostgreSQLを使うので書き換えます
# 変更前
production:
<<: *default
database: db/test.sqlite3
# 変更後
production:
adapter: postgresql
url: <%= ENV['DATABASE_URL'] %>
pool: 5
sslmode: require
-
production
から始まるところを書き換える - ymlファイルはインデントが違うとエラーが出たりするのでご注意を
-
<%= ENV['DATABASE_URL'] %>
部分は後ほどkoyebにて発行、設定するのでご心配なく
4.Dockerfile編集
ほとんどいじる必要はないのですがPostgreSQLを使う際に必要なライブラリを追記します。
以下二つのライブラリの追記が必要です。
-
libpq-dev
はビルド時にgem pg
をコンパイルするために必要。 -
libpq5
は実行時にPostgreSQLと通信するために必要。
見つけにくいかもしれませんが頑張って探して編集してください😇
libpq-devの追記
編集前
FROM base as build
# Install packages needed to build gems
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y build-essential git libvips pkg-config
編集後
#最後に`libpq-dev`を追加
FROM base as build
# Install packages needed to build gems
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y build-essential git libvips pkg-config libpq-dev
libpq5
の追記
編集前
# Final stage for app image
FROM base
# Install packages needed for deployment
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y curl libsqlite3-0 libvips && \
rm -rf /var/lib/apt/lists /var/cache/apt/archives
編集後
#以下のように`libpq5`追記
# Final stage for app image
FROM base
# Install packages needed for deployment
RUN apt-get update -qq && \
apt-get install --no-install-recommends -y curl libsqlite3-0 libvips libpq5 && \
rm -rf /var/lib/apt/lists /var/cache/apt/archives
一旦ここら辺でGithubにpushしときましょう。
git add .
git commit -m "リリース準備"
git push origin main
main
の部分はリリースするブランチ名に適宜書き換えてくださいね
5.koyebにサインアップ
やっとkoyebを開きます
GitHubアカウントで登録すると登録手順省けて楽なのでGitHubアカウントでサインアップしましょう
こちらからどうぞ
6.Databaseの作成
データベースとサイトを作成する必要があります。(どちらも無料プランあり)
先にデータベースから作った方が効率がいいのでパパって作っちゃいましょう
Create database service
を押下
- regionは無料で使えて且つ一番遅延の少ないシンガポールを選択
- instanceをfreeにするのをお忘れなく。
あとは自由で設定できたらCreate
を押下
-
Ruby On Rails
タブの.env
の内容をコピーする - コピーする際目玉マークを押して******で隠れてる部分が表示されてるのを確認してコピーすること
7.デプロイ
左上の緑ボタンCreate Servise
- GitHubを選択
- リリースするレポジトリを選択
-
CPU Eco
タブからFree
を選択 - 右側でドイツかアメリカのどちらかを選択(アメリカの方が早いのかも)
-
Source
でブランチを選択(mainやmasterしかない場合はそのまま) -
Builder
はDokerfileを選択 - 上記二つが終わったら
Enviroment variables
を開きRaw editor
を押下
-
RAILS_MASTER_KEY
とDATABASE_URL
の登録は必須です -
RAILS_MASTER_KEY
はconfig/master.key
の中にある内容をそのまま貼り付けましょう -
DATABASE_URL
は先ほど6.Databaseの作成
にて作成した際にコピーした内容を貼り付けましょう -
その他写真投稿やGoogle MapなどAPIキーを環境変数にて管理してるものはこのタイミングで
.env
などから全て貼り付けてください -
貼り付け終わったら
Save
を押して下部のdeploy
を押しましょう
-
Overview
タブからデプロイ結果が確認できます - エラーログは
Build
タブやDeployment
タブから確認できるので適宜対処してください
エラー修正後、再度GitHubにpushすれば自動的に再デプロイが始まります。
再デプロイ
GitHubにpushするだけで再デプロイが可能です。
便利ですね。
以上でkoyebでリリースする手順は終わりです。お疲れ様でした。
あとがき
クレカ登録やらheroku学生プラン時の学生証認証など、面倒なことはせずに無料で簡単にリリースできるポートフォリオ程度のリリースで使ってみても良きかもです。
記事執筆時地点では無料ですが、今後どうなるかは分からないです悪しからず(fly.ioみたいにね。。。。)