tker-78 / rails-cloud-run

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Deployment of Rails applications to Google Cloud Run

APIの有効化

$ gcloud services enable run.googleapis.com sql-component.googleapis.com \
  cloudbuild.googleapis.com secretmanager.googleapis.com compute.googleapis.com \
  sqladmin.googleapis.com

sqlインスタンスの作成

$ gcloud sql instances create rails-instance \
  --database-version POSTGRES_12 \
  --tier db-f1-micro \
  --region asia-northeast1

データベースの作成

$ gcloud sql databases create rails-database \
  --instance rails-instance

データベースのユーザーパスワードを作成

$ cat /dev/urandom | LC_ALL=C tr -dc '[:alpha:]'| fold -w 50 | head -n1 > dbpassword
$ gcloud sql users create rails-user \
  --instance rails-instance \
  --password=$(cat dbpassword)

Cloud Storageのバケットの作成

$ gsutil mb -l asia-northeast1 gs://metal-figure-412823-media
$ gsutil iam ch allUsers:objectViewer gs://metal-figure-412823-media

Secret Manager

$ EDITOR=vim bin/rails credentials/edit
$ gcloud secrets create rails-secret --data-file config/master.key
$ gcloud secrets describe rails-secret

プロジェクトへのアクセス権を与える

$ gcloud secrets add-iam-policy-binding rails-secret \
  --member serviceAccount:482406439394-compute@developer.gserviceaccount.com \
  --role roles/secretmanager.secretAccessor
$ gcloud secrets add-iam-policy-binding rails-secret \
  --member serviceAccount:482406439394@cloudbuild.gserviceaccount.com \
  --role roles/secretmanager.secretAccessor
$ gcloud projects add-iam-policy-binding metal-figure-412823 \
    --member serviceAccount:482406439394@cloudbuild.gserviceaccount.com \
    --role roles/cloudsql.client

ビルド

$ gcloud builds submit --config cloudbuild.yaml 

デプロイ

$ gcloud run deploy rails-cloud-run \
  --platform managed \
  --region asia-northeast1 \
  --image gcr.io/metal-figure-412823/rails-cloud-run \
  --add-cloudsql-instances metal-figure-412823:asia-northeast1:rails-instance \
  --allow-unauthenticated

以上でうまくいった。 ポイントは、cloudbuild.yamlを正しく記述すること。

About


Languages

Language:Ruby 73.8%Language:HTML 15.8%Language:JavaScript 5.3%Language:Dockerfile 2.9%Language:CSS 1.3%Language:SCSS 0.7%Language:Shell 0.3%