9
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

GAE/GoをDocekrで動かす

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

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
9
Help us understand the problem. What are the problem?