ローカル環境のTerraformから操作を行い、GCP上にフロントエンド(Next.js)とバックエンド(Echo)をデプロイするボイラープレートです。
ハッカソンなどで短時間で最低限の環境を構築する必要がある場合に利用できます。
- フロントエンド
- Next.js
- TypeScript
- Tailwind CSS
- ESLint
- StandaloneモードでCloud Runにデプロイを行います
- Next.js
- バックエンド
- Go
- APIフレームワークとしてEcho
- Cloud Runにデプロイを行います
- GCSがマウントされており、GCS上にファイルを保存することでSQLiteを安い料金で利用できるように設定されています
- この機能のためにCloud Runの同時実行数は1に設定されているため、ご注意ください
- バケット名を指定しないようにすることで、この機能は自動的に無効化されます
- GCSがマウントされており、GCS上にファイルを保存することでSQLiteを安い料金で利用できるように設定されています
- Go
- インフラ
- TerraformによるIaC
- 一連のデプロイをまとめるツールとしてもTerraformが機能しています
- Google Cloud Platformにデプロイを行います
- TerraformによるIaC
terraform/variables.tf
の修正- variable "project_id" の値を自身のGCPのプロジェクトIDに変更
terraform/provider.tf
の修正- あらかじめGCSのバケットを作成する
- backend "gcs" の bucket の値を作成したGCSのバケット名に変更
terraform/variables.tf
の修正- variable "name" の値を任意の名前に修正
- 複数のプロダクトをこのテンプレートでデプロイすると作成するバケット名が衝突する可能性があるため、一意の名前にしてください
- Docker
- Terraform
- Google Cloud SDK
brew install terraform
brew install --cask docker
brew install --cask google-cloud-sdk
brew install --cask google-cloud-sdk
gcloud init
gcloud config configurations activate default
gcloud auth login
gcloud config set project [PROJECT_IDを入れる]
gcloud auth application-default login
gcloud auth configure-docker
gcloud auth configure-docker us-east1-docker.pkg.dev
docker compose build
docker compose up
- フロントエンド
- バックエンド
もしくは以下の操作を行うことで、それぞれのサービスを起動することができます。
cd [frontend|backend]
docker compose build
docker compose up
cd terraform
terraform init
terraform apply
- デプロイが完了したら表示されるそれぞれのURLにアクセスしてください
- google_cloud_run_backend_url = "https://xxxxxx.a.run.app"
- デフォルト状態であれば、
/
にアクセスすることで、Hello, World! Your access ID is 9c4515b3-c8ce-474e-b320-6c8013214b55
といった文字列が表示されます /list
にアクセスすることで、それまでのアクセス一覧が表示されます- GCS+SQLiteを利用することで、Cloud RunでもRDBによる永続化を低コストで行うことができます
- ただし、Cloud Runの同時実行数は1に制限されるため、商用環境ではCloud SQLなどを利用することをお勧めします
- デフォルト状態であれば、
- google_cloud_run_frontend_url = "https://yyyyyy.a.run.app"
- google_cloud_run_backend_url = "https://xxxxxx.a.run.app"