Google App Engine( GAE )にGoAppをデプロイする
GAEにGoをデプロイして動作確認をする。
■ App Engine extension for Goをインンストール
$ gcloud components install app-engine-go
$ mkdir myapp && cd myapp
■ googleアカウント認証
$ gcloud auth login
- これを実施しないとデプロイに失敗する
■ app.yamlを作成する
runtime: go api_version: go1 handlers: - url: /.* script: _go_app
■ main.go
package main import ( "encoding/json" "net/http" "google.golang.org/appengine" ) type Response struct { Status string `json:"status"` Message string `json:"message"` } func main() { http.HandleFunc("/", handle) appengine.Main() } func handle(w http.ResponseWriter, r *http.Request) { json.NewEncoder(w).Encode(Response{Status: "ok", Message: "Hello world."}) }
■ ~/GAE/myapp/ ls
app.yaml main.go
■ ローカルで動作確認
$ /usr/bin/python2.7 /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/dev_appserver.py app.yaml
- dev_appserver.pyが not foundの場合
- .zshrcに以下を記述する
export PATH="/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin:$PATH"
■ appengineのライブラリが不足している場合
$ go get "google.golang.org/appengine"
- GOPATHを myappのcurrentにすると、syscallが使えないGAEのデプロイに失敗するので注意
GAEにデプロイする
■ $ gcloud app deploy --project <PROJECT_ID>
動作確認
■ $ curl https://XXXXXXXXXXXXX.com
{"status":"ok","message":"Hello world."}
■ $ gcloud app browse