2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

GAE/Goでデプロイ先によってapp.yamlを切り替える

Posted at

GAE/Goで開発をしている際、GCPプロジェクトを本番用と開発用を作り、それぞれ別のapp.yamlを用いてデプロイしたい状況になった。
もう少し詳しく書くと、app.yamlファイルからincludeするyamlファイルを環境によって切り替えたくなった。なので、app.yamlを2つ用意してデプロイ時にapp.yamlを切り替えるという方法をとった。

プロジェクト構成

まず、プロジェクト内で本番用のディレクトリ(prod)と開発用のディレクトリ(dev)を作成する。
その中に

prod
 |- main.go
 |- app.yaml
 |- prod.yaml
 |- firebase_config.json

dev
 |- main.go
 |- app.yaml
 |- dev.yaml
 |- firebase_config.json

Makefile

こんな感じで
main.go ⇨ 最初に実行されるファイル app.yaml ⇨ デプロイに関する設定を記述しているファイル prod(dev).yaml ⇨ app.yamlからincludeされるファイル firebase_config.json ⇨ prod(dev).yamlから読み込まれるfirebaseの設定ファイルなど
を置く。

また、プロジェクトのルートに
Makefile
を置く。

app.yaml

app.yamlはこんな感じ

app.yaml
runtime: go
api_version: go1.9
env: standard
threadsafe: true
instance_class: F1

includes:
- prod.yaml

handlers:
- url: /.*
  script: _go_app
  secure: always
  redirect_http_response_code: 301

それぞれの環境にあったyamlファイル(上記の場合はprod.yaml)をincludeする。

prod(dev).yaml

prod(dev).yamlはこんな感じ。

prod.yaml
env_variables:
  SECRET_PROJECT_ID: #プロジェクトID
  CREDENTIALS: #firebaseの設定ファイルパス

main.go

main.goはこんな感じです。

main.go
package main

import (
	"xxxxx/backend/infrastructure"

	"google.golang.org/appengine"
)

func main() {
	infrastructure.RegisterHandlers()
	appengine.Main()
}

ルーティングを呼び出してます。

main.goは本番用も開発用も同じです。
切り替えるのはapp.yamlでincludeするyamlファイルです。

で、デプロイを冗長なコマンドでやっててもアレなんでMakefileでまとめておきます。

VER="deploy-version"

prod:
	gcloud config set project プロジェクトID
	goapp deploy -application プロジェクトID -version $(VER) ./deploy/app.yaml

dev:
	gcloud config set project プロジェクトID
	goapp deploy -application プロジェクトID -version $(VER) ./dev/app.yaml

下のコマンドでデプロイできます。

$ make prod VER=release

本番用なら make prod 開発用なら make dev です。
VERでデプロイするバージョンを指定できます。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?