My Note

自己理解のためのブログ

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>

f:id:yhidetoshi:20190619074222p:plain

動作確認

$ curl https://XXXXXXXXXXXXX.com

{"status":"ok","message":"Hello world."}

$ gcloud app browse

参考