GAE/GoをDocekrで動かす

  • 9
    いいね
  • 0
    コメント

macOS SierraでGAE/GoのSDK(1.9.40)がエラーになってビルドやデプロイができない。

回避方法としては、VMでやったり、Dockerでやったり Google Cloud Shellでやったりが考えられる。

このページでは Dockerでやってみる。
といっても、すでにDockerfileを公開している人がいるのでコマンド一発でOKである。

  • Dockerのセットアップは完了している前提
  • DockerやるならAlpine

A. 開発環境サーバーを立ち上げる

PROJECT_NAME=sample-project
cd ~/google-appengine-sdk/src/$PROJECT_NAME/default
docker run -it -v ~/google-appengine-sdk/src/$PROJECT_NAME/default/:/app \
  -v ~/go/src:/go/src \
  -p 8080:8080 -w /app \
  zadki3l/gae-go-alpine goapp serve --host=0.0.0.0
  1. プロジェクト名(sample-project)を自分のプロジェクト名にする
  2. ~/google-appengine-sdk/src/$PROJECT_NAME/default/の部分はローカルサーバーのapp.yamlが含まれているディレクトリを指定する
  3. ~/go/src の部分はローカルサーバーで echo $GOPATH の結果に /src を追加する

(追記) 上記だとadmin serverにアクセスできないようです。admin serverを使用する場合は、下記のようにdev_appserver.pyを使用します。

PROJECT_NAME=sample-project
cd ~/google-appengine-sdk/src/$PROJECT_NAME/default
docker run -it -v ~/google-appengine-sdk/src/$PROJECT_NAME/default/:/app \
  -v ~/go/src:/go/src \
  -p 8080:8080 -w /app \
  zadki3l/gae-go-alpine dev_appserver.py \
  --host 0.0.0.0 --admin_host 0.0.0.0 \
  --skip_sdk_update_check true app.yaml

B. デプロイする

PROJECT_NAME=sample-project
cd ~/google-appengine-sdk/src/$PROJECT_NAME/default
docker run -it -v ~/google-appengine-sdk/src/$PROJECT_NAME/default/:/app \
  -v ~/go/src:/go/src \
  -w /app zadki3l/gae-go-alpine goapp deploy

C. docker環境にログインして設定を確認する

万が一エラーになるときは docker環境にログインして調べる

PROJECT_NAME=sample-project
cd ~/google-appengine-sdk/src/$PROJECT_NAME/default
docker run -it -v ~/google-appengine-sdk/src/$PROJECT_NAME/default/:/app \
  -v ~/go/src:/go/src \
  -w /app zadki3l/gae-go-alpine /bin/sh