2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

RailsアプリケーションをCloudRunで動かしてみるまで

Posted at

ゴール

  • Cloud Run でRailsアプリケーションを動かせるようにする。
  • ローカルからContainerRegistryにコンテナをPushし、そこからCloudRunにコマンドでデプロイする。

実行環境

  • Ruby
    • 3.1.2
  • Ruby on Rails
    • 7

持病の関係で1年ほどブランクがあり、仕事に戻るため知識を取り戻す&Dockerをそれなりに使えるようにするために、RailsアプリケーションをCloudRunにデプロイする方法をまとめてみました。

Railsアプリケーション

  • 今回はDB周りは無視したいので、 --skip-active-recordrails new します。
  • またこの記事はRailsアプリケーションの開発が目的ではないので、アクセスするとただ文字列が表示されるだけのRailsアプリを用意します(Railsじゃなくてもw)

準備

  • $ rails _7.0.3_ new --skip-active-record kaesudake
  • $ bundle exec rails g controller tops index
config/route.rb
root 'tops#index'
app/controllers/tops_controller.rb
class TopsController < ApplicationController
  def index; end
end
app/views/tops/index.html.erb
<h1>Hello 返すだけ!!</h1>

Dockerfile, docker-compose.yml, build-docker.sh

Cloud Run はデフォルトでリッスンするポートは 8080 のようなので、 8080 に指定します。(もちろん変えれます)

Dockerfile
FROM ruby:3.1.2

RUN mkdir /app
WORKDIR /app

COPY . /app

RUN gem install bundler & \
    bundle install

ENTRYPOINT ["/bin/sh", "-c"]

CMD ["rm tmp/pids/server.pid; bin/rails assets:precompile && bin/rails s -p ${PORT}"]
docker-compose.yml
version: "3.8"
services:
  app:
    image: kaesudake
    ports:
      - 8080:8080
    stdin_open: true
    tty: true
    environment:
      PORT: 8080
    volumes:
      - .:/app
build-docker.sh
docker build --no-cache -t kaesudake .

イメージの作成

私はzshを使っているので、下記コマンドを実行して、イメージを作成します。

zsh build-docker.sh

Artifact Registry に Push

GCPのArtifactRegistryにimageをPushします。
その前に コマンドラインツールのgcloudをセットアップします。
セットアップ方法は 公式ドキュメント をご参照ください。

docker tag kaesudake <ArtifactRegistryのURL>/kaesudake
docker push <ArtifactRegistryのURL>/kaesudake

ArtifactRegistryのイメージを利用してCloudRunにデプロイ

先ほどArtifactRegistryにPushしたイメージを利用して、CloudRunにコンテナをデプロイします。
コンソールに未認証のリクエストを許可するかどうかを尋ねるプロンプトがでるので、今回は y を選択します。未認証のリクエストを許可すると、誰でもアクセスできるようになります。

gcloud run deploy --image <ArtifactRegistryのURL>/kaesudake

処理が完了すると、最後に Service URL が表示されるので、そのURLにアクセスすると、Railsアプリの root にアクセスできます。

今回は以上です。
次はCloudSQLと接続したRailsアプリをCloudRunにデプロイできるようにしてみたいと思います。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?