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をブラウザに入力します。
すると、下記のような画面になります。
取得したキーを入力して、認証を勧めます。
Enter verification code: xxxxxxxxxxx
Authentication successful.
これで初回のデプロイは成功です。
homeディレクトリをvolumeとして指定してあるので、2回目以降は認証は不要です。
2回目以降
2回目以降はシンプルに下記のコマンドをローカルから実行するだけで大丈夫です。
./deploy.sh simple-app-1234 v1
まとめ
とりあえず作って見ましたが、WindowsだとPythonとか入れる手間がなくなるので、結構良い気がしますね。
PaaS系はこの配布方式が向いてる気がしますね、なんとなく。Heroku版も作ろうかな。
それでは、HappyHacking!