Open4
Difyのセルフホスト環境をGoogleCloudで作成する
![keitakn](https://res.cloudinary.com/zenn/image/fetch/s--aYHKtAVs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b8adb967d2.jpeg)
やりたい事
Difyのセルフホスト環境をGoogleCloudで作成します。
Cloud Runが一番簡単そうなので、Cloud Runを利用します。
![keitakn](https://res.cloudinary.com/zenn/image/fetch/s--aYHKtAVs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b8adb967d2.jpeg)
前提条件
- MacOSを利用している
- ローカルで
gcloud
が利用出来る状態- 利用出来ない場合は
brew install --cask google-cloud-sdk
で導入を行う
- 利用出来ない場合は
- GoogleCloudのプロジェクトを作成している
![keitakn](https://res.cloudinary.com/zenn/image/fetch/s--aYHKtAVs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b8adb967d2.jpeg)
GoogleCloudの認証&サービスの有効化
だいたいの人はそうだと思いますが自分は複数のプロジェクトを管理しているので以下のようにプロジェクト毎にGoogleCloudの認証設定を追加しておくと便利です。
1. 各プロジェクト用の設定を作成
gcloud config configurations create [任意のプロジェクト名]
2. 各設定にアカウントとプロジェクトを紐付ける
gcloud config configurations activate [任意のプロジェクト名]
gcloud auth login [利用するGmailのメールアドレス]
gcloud config set project [GOOGLE_CLOUD_PROJECT_ID]
3. 各設定でApplication Default Credentialsを設定
gcloud config configurations activate [任意のプロジェクト名]
gcloud auth application-default login
gcloud auth application-default set-quota-project [GOOGLE_CLOUD_PROJECT_ID]
コマンドの実行前に gcloud config configurations activate [任意のプロジェクト名]
を実行して対象プロジェクトの認証設定が有効になっている事を確認します。
現在の設定は以下のコマンドで確認可能です。
gcloud config configurations list
ここまで出来たら以下のコマンドを実行してCloudRunに必要な以下のサービスを有効化します。(既に有効化している場合は省略可能です)
gcloud services enable run.googleapis.com artifactregistry.googleapis.com cloudbuild.googleapis.com secretmanager.googleapis.com
![keitakn](https://res.cloudinary.com/zenn/image/fetch/s--aYHKtAVs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/b8adb967d2.jpeg)
Dify環境の構築
公式 を見ていると https://github.com/DeNA/dify-google-cloud-terraform にGoogle Cloudに構築する方法が記載してあります。
しかしCloudSQLとMemorystoreが少々高いのでSupabaseとupstashを利用した環境構築を目指してみます。