golang-migrateを使ってspannerのDBマイグレーションをする

概要

spannerのDBマイグレーションで、golang-migrateを使ったのでメモ。

使い方

dockerで使う想定。 dockerではなくバイナリで実行していたが、ホストマシンのopensslのバージョンに依存して動作しない可能性あるようなので、コンテナ実行が無難だと思う。

COMMANDには、up、down、versionなど指定する。 cf. github.com - golang/migrrate/migrate/tree/aster/cmd/migrate#usage

ワンライナーで実行コマンドを書いたので見づらいと思うが、特に難しいとこはないと思う。

マウントしているやつは以下2つ。

/migrationsにはマイグレーション対象のsqlファイルを用意している。それをコンテナの/migrationsにマウント。

~/.config/gcloud/:/root/.config/gcloud はgcloudの認証を通すため。 credentialファイルをマウントして、環境変数GOOGLE_APPLICATION_CREDENTIALSをセットする形でも認証を通せるが、この方が楽なので・・

直近のgolang-migrateのバージョンではspannerの接続情報にはクエリパラメータが必要。

経緯はこのへん。