Open4
CloudBuildからCloudSQLへの接続
大体この記事にある内容
- Prismaでつなぎたい
-
DATABASE_URL
はSecretManagerで管理する想定
他にもやってる人がいた
マイグレーション周りの方法の検討をしている
- CloudBuildからは失敗している
- Cloud Functionsからやる方法はコスト的に良さそう ただ、Cloud Buildから繋げないらしい
- Cloud Runでやる
最後の方法でやったらしい
なんとなく大掛かり感がある
上の記事では、 gcr.io/google-appengine/exec-wrapper
というのを使っていた。
さっきの記事の場合、 entrypoint
を bash
とし、 args
で -c /buildstep/execute.sh
としている。
これで実行した場合、後に続くイメージの指定や環境変数の指定なんかが /buildstep/execute.sh
のオプション指定扱いではなく bash
のオプション指定扱いになるような動きになった。
そのためイメージが無いというエラーが起きた。
この辺を直して最終的に以下のようになっている。
- id: "apply-migrations"
name: "gcr.io/google-appengine/exec-wrapper"
args:
- "-i"
- "${_ARTIFACT_REPOSITORY_MIGRATE_IMAGE_NAME}:latest"
- "-e"
- "DATABASE_URL=$$DATABASE_URL"
- "-s"
- "${_CLOUDSQL_INSTANCE_FULL_NAME} -- npm run migrate:deploy"
secretEnv: ["DATABASE_URL"]
availableSecrets:
secretManager:
- versionName: "projects/$PROJECT_ID/secrets/database_url/versions/latest"
env: "DATABASE_URL"
前の記事を参考に、SecretManagerから値を取りつつ、 gcr.io/google-appengine/exec-wrapper
で使うようにしている。
諸事情によりSecretManagerに入れている DATABSE_URL が小文字になっているので env に渡す際に直している。