Dockerで作るGAE with go開発環境

More than 3 years have passed since last update.

Windowsに開発環境を作るのは何かと面倒だし、私の場合、ノートPCはMacBookAirだったりするので、うまく共用出来ないかなー、とSDKをDockerベースでラッピングしてみることにしました。

「開発環境をDockerで!」って言うのは割りと流行りだと思いますが、どちらかというと実行環境の意味が強い気がします。

今回はGAE系のコマンドをまとめてDockerに入れることでSDKの導入を簡単にしよう! というのが趣旨です。PythonだのRubyだのをWindowsに入れるのは面倒なので。

Dockerイメージはこちらに登録した、koduki/sdk-gae_goを追加います。


ローカルサーバでの開発


サーバの起動

まず、下記のコマンドでローカルサーバを立ち上げます。

$ ./serve.sh

これで、ローカル、正確にはDockerMachine上にサーバが立ち上がりました。内部的には下記のような処理をしています。

WK_DIR=$(cd $(dirname $0);pwd)

IMAGE_NAME=koduki/sdk-gae_go
docker run -it --rm -p 8080:8080 -v ${WK_DIR}/app:/app -v ${WK_DIR}/home:/root $IMAGE_NAME goapp serve --host=0.0.0.0 /app

見ての通り、単純なgoappのラッパーです。

http://localhost:8080 またはWindowsやMacでdocker-machineを使ってる場合は http://192.168.99.100:8080 等でアクセスできます。

カレントディレクトリのappをボリュームとしてマウントしているので、そちらのコードを編集すれば、反映されます。

ただ、現状hot deplpyがうまく効かないので、一度"C-c"なので、server.shを停止して、再起動する必要があります。


パッケージのインストール

パッケージが使えないとgoでの生産性が半減どころじゃなく下がってしまいますね?

パッケージもDocker上で入れます。Dockerfileの行末に記載があるので、そちらに追記することでパッケージを追加出来ます。

修正したら、下記コマンド等でイメージの更新または作成を行います。

$ docker build -t koduki/sdk-gae_go .

ビルドが完了したら再度コンテナを動かすことで、反映が確認できます。


Google App Engineへのデプロイ

では、続いてGAEへのデプロイです。アプリケーションの登録は済んでいる事を前提にします。


初回デプロイ

まず、初回アクセスの場合は認証が必要です。

コンテナにログインして、認証キーを作りましょう。

$ ./run.sh

root@3d004aa982d3:/# appcfg.py --noauth_local_webserver -A simple-app-1234 -V v1 update /app/
....
Go to the following link in your browser:

https://accounts.google.com ... ccess_type=offline

Enter verification code:

ここで認証コードを取得するように言われるので、上記のURLをブラウザに入力します。

すると、下記のような画面になります。

001.png

002.png

取得したキーを入力して、認証を勧めます。

Enter verification code: xxxxxxxxxxx

Authentication successful.

これで初回のデプロイは成功です。

004.png

homeディレクトリをvolumeとして指定してあるので、2回目以降は認証は不要です。


2回目以降

2回目以降はシンプルに下記のコマンドをローカルから実行するだけで大丈夫です。

./deploy.sh simple-app-1234 v1


まとめ

とりあえず作って見ましたが、WindowsだとPythonとか入れる手間がなくなるので、結構良い気がしますね。

PaaS系はこの配布方式が向いてる気がしますね、なんとなく。Heroku版も作ろうかな。

それでは、HappyHacking!


参考