GAE Go にデプロイするときの .env
どうしようかと思ったのですが
joho/godotenv
を使って
ここに書いてあるようにしようと思いました。
https://github.com/joho/godotenv#precendence--conventions
env := os.Getenv("FOO_ENV")
if "" == env {
env = "development"
}
godotenv.Load(".env." + env + ".local")
if "test" != env {
godotenv.Load(".env.local")
}
godotenv.Load(".env." + env)
godotenv.Load() // The Original .env
やることは簡単
FOO
という名前のアプリだとして、 FOO_ENV
を各環境に設定します。
開発環境は docker-compose
なので、
services:
golang:
environment:
FOO_ENV: development
としました。
そして、GAE環境は、以下の参考にしながら
https://cloud.google.com/appengine/docs/standard/go111/config/appref
runtime: go111
env_variables:
FOO_ENV: production
としました。
あとは、環境ごとに .env
を用意します。
.env.development
.env.production
これで、gcloud app deploy
として無事動きました。めでたしめでたし。
だけど、途中でひとつこまったことがあります。
GAE の環境変数が正しく設定されているのかを確認したくて、GAE に ssh しようと思ったのですが、うまくいきませんでした。原因は僕が今使っているのが、フレキシブル環境ではなく、スタンダード環境だったからでした。たぶん。
フレキシブル環境だとドキュメント見つかるけどスタンダードだと見つからずでした。
https://cloud.google.com/appengine/docs/flexible/go/debugging-an-instance?hl=ja
以上です