Google App Engine(Standard環境)をローカルでテストしたい
経緯
ずいぶん昔に構築したGoogle App Engine(以下GAE)のプロジェクト(Python2系)を最新のGo 1.12+に移行しようとしたところ、どうも最新の環境では昔あったローカル実行の為のdev_appserver.pyが利用できない様子(Go 1.11までなら利用できるっぽい?)。
公式曰く、最新の環境ではGAEに強く依存したライブラリを利用しない方向性になってるから普通にgo runしろとのことだけど、それでは静的ファイルの配信ができず、動作確認としてはどうも中途半端。
という訳で、静的ファイルの配信を行ってくれる仕組みを自前で作ることにした。
作ったもの
これ
このプログラムは2つのことをする。
- app.yamlを元に、静的ファイルをルーティングする。
- app.yamlを元に、動的ページのリバースプロキシとして動作する。
以下はやってくれない。
- Datastore、Memcache、タスクキューなどのGoogle App Engine 特有のAPIのサポート。
使い方
-
アプリケーションサーバーの起動
まず各言語のそれぞれの方法でアプリケーションサーバーを起動する。
Go言語でいうと
go build | ./main.exe`
Pythonだと
python main.py
かな。
それでそれが
http://localhost:8080
で起動したとする。 -
gaemuの起動
gaemuの実行ファイルをダウンロードしてきて、実行できるようにPATHを通して、以下のようにコマンドを実効する。gaemu -a "http://localhost:8080" -y "../YOUR_APP_PATH/app.yaml"
-yオプションで指定している
YOUR_APP_PATH
はapp.yamlがあるディレクトリ、-aオプションで指定しているのは①の工程で起動したアプリケーションサーバーのURL。 -
動作確認
-pで別途指定しなければ、デフォルトではgaemuはhttp://localhost:8081
で起動する。
こんな感じに。
まとめ
こういうのくらい公式で用意して欲しいところだけど、Google的にはいちいちデプロイしましょうって方向性なのかな。Flexible Environmentならこの手の悩みは少ないだろうけど。
Discussion