14
17

More than 5 years have passed since last update.

Dockerで作るGAE with go開発環境

Posted at

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!

参考

14
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
17