0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

koyebを使ってrailsアプリを無料でリリースしてみた。

Posted at

どうやら無料で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の編集

以下のように変更をしてください。

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 with bundle lock --add-platform x86_64-linux and try again.

ターミナル
bundle lock --add-platform x86_64-linux

3.database.ymlの編集

koyebではsqlite3ではなくPostgreSQLを使うので書き換えます

config/database.yml
# 変更前
 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の追記

編集前

Dockerfile
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

編集後

Dockerfile
#最後に`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の追記

編集前

Dockerfile
# 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

編集後

Dockerfile
#以下のように`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の作成

データベースとサイトを作成する必要があります。(どちらも無料プランあり)

先にデータベースから作った方が効率がいいのでパパって作っちゃいましょう
image.png

Create database serviceを押下

image.png

  • regionは無料で使えて且つ一番遅延の少ないシンガポールを選択
  • instanceをfreeにするのをお忘れなく。

あとは自由で設定できたらCreateを押下


スクリーンショット 2025-01-15 16.21.52.png

  • Ruby On Railsタブの.envの内容をコピーする
  • コピーする際目玉マークを押して******で隠れてる部分が表示されてるのを確認してコピーすること

7.デプロイ

左上の緑ボタンCreate Servise

スクリーンショット 2025-01-15 17.19.42.png

  • GitHubを選択

スクリーンショット 2025-01-15 17.23.05.png

  • リリースするレポジトリを選択

image.png

  • CPU EcoタブからFreeを選択
  • 右側でドイツかアメリカのどちらかを選択(アメリカの方が早いのかも)

https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_1874115_eeaea87a-e2cb-9520-ced7-dddbe755544bのコピー.jpg

  • Sourceでブランチを選択(mainやmasterしかない場合はそのまま)
  • BuilderはDokerfileを選択
  • 上記二つが終わったらEnviroment variablesを開きRaw editorを押下

スクリーンショット 2025-01-15 17.39.50.png

  • RAILS_MASTER_KEYDATABASE_URLの登録は必須です

  • RAILS_MASTER_KEYconfig/master.keyの中にある内容をそのまま貼り付けましょう

  • DATABASE_URLは先ほど6.Databaseの作成にて作成した際にコピーした内容を貼り付けましょう

  • その他写真投稿やGoogle MapなどAPIキーを環境変数にて管理してるものはこのタイミングで.envなどから全て貼り付けてください

  • 貼り付け終わったらSaveを押して下部のdeployを押しましょう

後からvariablesを追加するときはsave押下後、下部のdeployボタン横にあるsaveボタンを押すのも忘れないようにしましょう(これ知らなくて2時間ぐらい格闘してた😇)

スクリーンショット 2025-01-15 17.57.48.png


スクリーンショット 2025-01-15 18.05.57.png

  • Overviewタブからデプロイ結果が確認できます
  • エラーログはBuildタブやDeploymentタブから確認できるので適宜対処してください

エラー修正後、再度GitHubにpushすれば自動的に再デプロイが始まります。

再デプロイ

GitHubにpushするだけで再デプロイが可能です。
便利ですね。


以上でkoyebでリリースする手順は終わりです。お疲れ様でした。

あとがき

クレカ登録やらheroku学生プラン時の学生証認証など、面倒なことはせずに無料で簡単にリリースできるポートフォリオ程度のリリースで使ってみても良きかもです。

記事執筆時地点では無料ですが、今後どうなるかは分からないです悪しからず(fly.ioみたいにね。。。。)

0
0
0

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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?