この記事を元にGOアプリをElastic Beanstalkにデプロイしたメモ。
GOのビルドはどこで行う?
- リモート(eb上)で実施
- ローカルで実施
最初は 1. で頑張っていたが依存などの関係を構築するのがかなり面倒だったので 2. を採用。
ビルドしたバイナリをgitに毎回commitするのは非常に残念なのでeb deploy
ラッパーを作成しそれでデプロイを実施することにした。
デプロイに必要なファイルは実行形式のバイナリとProcfileと.ebextensionsの設定ファイル程度なので、それだけをzipで固めてeb deploy
を実施。
所定のzipファイルを使う場合は.elasticbeanstalk/config.yml
に以下を追加しておく。
deploy:
artifact: /tmp/app.zip
eb deployのラッパーのサンプルはこんな感じ。
#!/usr/bin/env bash
set -xe
ZIP_FILE=/tmp/app.zip
test -e $ZIP_FILE && rm -f $ZIP_FILE
# GOのビルド
godep go build -o bin/application ...
zip -9 $ZIP_FILE bin/application Procfile $(git ls-files .ebextensions/)
eb deploy --staged