LoginSignup
0
0

初心者のGCP:Cloud Run編

Posted at

Next.jsで、アプリを色々作っているのですが、他の人に共有するためにCloud Runで簡単な公開をします。

やりたいこと

以下のようにNext.JSの静的アプリケーションをCloud Runでホスティングします。

スクリーンショット 2024-05-05 23.29.24.png

開発環境

  • Macbook Air Apple M1
  • macOS Sonoma 14.3.1

GCPでの作業

GCPの初期設定

gcpコマンドに迷ったらここを参照

Cloud Runで、Next.jsアプリのホスティング

基本的にこちらを参考にCloud Run へのホスティングを実施

Cloud Buildの有効化

$ gcloud services enable cloudbuild.googleapis.com --project <gcpのプロジェクトID>

Cloud Runの有効化

$ gcloud services enable run.googleapis.com --project <gcpのプロジェクトID>

example >>>
$ gcloud services enable run.googleapis.com --project nextjs-blog-395615

Cloud Buildで、コンテナイメージのビルド

$  gcloud builds submit --tag gcr.io/<gcpのプロジェクトID>/<アプリケーション名>  --project <gcpのプロジェクトID>

example >>>
$  gcloud builds submit --tag gcr.io/nextjs-blog-395615/nextjs-blog  --project nextjs-blog-395615

デプロイ

$ gcloud run deploy <アプリケーション名> --image gcr.io/<gcpのプロジェクトID>/<アプリケーション名>  --platform managed  --project <gcpのプロジェクト名> --region=asia-northeast1 --allow-unauthenticated

example >>>
$ gcloud run deploy nextjs-blog --image gcr.io/nextjs-blog-395615/nextjs-blog  --platform managed  --project nextjs-blog-395615 --region=asia-northeast1 --allow-unauthenticated

これで、Cloud Runにデプロイが完了します。

Cloud Storageから、Staticファイルを引っ張ってくる設定

以下を参考に、3Dモデルなどのファイルサイズの重いファイルをCloud Storageから引っ張ってくるようにする。

今回はクライアントサイドアプリからの実行のため、全てのアクセスを許可する設定にしていますが、不特定多数のアクセスの可能性があるため高額になるリスクがあります

まずは、Cloud Storageに特定のファイルをアップロード

Cloud Storageのアクセス権でパブリックアクセスを許可

クライアントから直接Cloud Storageにアクセスするため、各Staticファイルのアクセス権を編集します。

スクリーンショット 2024-05-06 13.20.38.png

アクセス権に、以下を設定して、すべてのユーザがアクセス可能な状態にします。

  • エンティティ: Public
  • 名前: allUsers
  • アクセス権: Reader

スクリーンショット 2024-05-06 13.21.14.png

Cloud StorageにCORSを設定する

Webアプリのため、Cloud Storageのファイルにアクセスすると、CORSエラーに引っかかります。
なので、Cloud Storage側のCORSの設定を以下を参考に実施します。

config.json
jsonにてCORSを設定します。

originに、許可するURLを設定します。

[
    {
      "origin": ["http://localhost:8080"],
      "method": ["GET"],
      "responseHeader": ["Content-Type"],
      "maxAgeSeconds": 300
    }
]

適用

Cloud Storageに設定を反映します

gsutils cors set cors.json gs://<Cloud StorageのURL>

CORSの反映には少し時間がかかります。

完成

これで、Next.jsのクライアントサイドアプリを、Cloud Runにデプロイして運用を始めることができました。

今後、Firebase Authenticationで、特定のGoogle アカウントからのみのアクセスを許可する形で実施できればと思います。

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