LoginSignup
9
2

More than 1 year has passed since last update.

【超シンプル版】Rails アプリを Cloud Run で動かしてみよう

Posted at

はじめに

Rails アプリを実行するためのサーバー環境はたくさんあると思いますが、今回は手軽に始められる Cloud Run を利用して Rails アプリを動かしてみようと思います。
今回は Cloud Run に触れることを目的に超シンプル版で構築していきます。

Cloud Run とは

フルマネージドのサーバーレス プラットフォームでお好きな言語を使用して、スケーラブルなコンテナ型アプリを構築してデプロイできます。

Google Cloud が提供するプロダクトの1つです。
プログラミング言語の縛りはなく、リクエストが来たときにインスタンスが起動してレスポンスを返すサーバーレスタイプのプロダクトです。

利用している時間だけ課金されるタイプです。無料枠もありますので、個人で試したい時には良さそうですね。

前提

利用するプロダクト

  • Cloud Run
  • Cloud Build
  • Container Registry

構築の流れ

  1. Rails アプリ作成
  2. Cloud Build でイメージ作成
  3. Cloud Run にデプロイ

Rails アプリ作成

scaffoldでシンプルなCRUDページを作成します。

# Rails アプリ作成. この後は sample-app 配下で作業します
$ rails new sample-app
$ cd sample-app

# scaffold でページ作成
$ bin/rails g scaffold Post title:string content:text
$ bin/rails db:migrate

# http://localhost:3000/posts で動作確認します。
$ bin/rails s

Cloud Build でイメージ作成

イメージ作成の設定ファイル Dockerfile を作成します。

$ touch Dockerfile
Dockerfile
FROM ruby:3.1.2
RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
ADD . /myapp
RUN bundle exec rails db:migrate
# Cloud Run はデフォルトポート8080で起動
EXPOSE 8080
CMD ["bin/rails", "server", "-b", "0.0.0.0", "-p", "8080"]

Cloud Build の設定ファイル cloudbuild.yaml を作成します。

$ touch cloudbuild.yaml
cloudbuild.yaml
steps:
  # Cloud Build でビルド
  - id: "build image"
    name: "gcr.io/cloud-builders/docker"
    entrypoint: 'bash'
    args: ["-c", "docker build -t gcr.io/${PROJECT_ID}/${_SERVICE_NAME} . "]
  # Container Registry にアップロード
  - id: "push image"
    name: "gcr.io/cloud-builders/docker"
    args: ["push", "gcr.io/${PROJECT_ID}/${_SERVICE_NAME}"]
substitutions:
  _SERVICE_NAME: sample-app-service
images:
  - "gcr.io/${PROJECT_ID}/${_SERVICE_NAME}"

Cloud Build でビルドして、Container Registry にアップロードします。
Cloud Build API の権限がない場合は、許可するか聞かれることがあります。

$ gcloud builds submit .

Cloud Run にデプロイ

Cloud Run にデプロイします。
こちらもAPI権限がない場合は、許可するか聞かれることがあります。

# --image は Container Registry にアップロードしたものを設定
# --allow-unauthenticated で誰でもアクセスできるようにする
$ gcloud run deploy sample-app-service \
   --image gcr.io/cloud-run-build/sample-app-service \
   --region asia-northeast1 \
   --allow-unauthenticated

...

Service URL: https://sample-app-service-[xxx]-an.a.run.app

Service URL が表示される為、/posts/newにアクセスして登録処理ができれば完了です!

image.png

まとめ

今回は超シンプルに Cloud Run でアプリを動かしました。
実際のサービスを運用するにはデータベースに Cloud SQL を使ったり、環境変数を Secret Manager で管理するなど、他のプロダクトの連携が必要になります。
実運用に近い形も検証して、また記事にしていきたいと思います!

Reference

9
2
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
9
2