芸者東京で使っているデプロイプラグインです。
PlayFrameworkをDockerImage化し、AWS ECRにPushし、AWS EBSへデプロイを行います。
'gdep:doctor'を実行することで、環境が整っているかチェックが出来ます。
また、'gdep:doctor'実行後'last gdep:doctor'で詳細や解決策を見ることが出来ます。
ローカルでdockerコマンドを使える状態にして下さい。
※ まだMavenCentralにPushしていないため、ソースからビルドしてpublishLocalしないと動きません
project/plugins.sbt
addSbtPlugin("com.geishatokyo" % "sbt-gte-deploy" % "0.1.1")
build.sbt
enablePlugins(gtedeploy.GTEDeployPlugin)
を追加して下さい。
Configを参照して下さい。
ドキュメント中の{{appName}},{{staging}}は、sbtで設定した値を使用して下さい。
また、このドキュメントは、デフォルトでpluginを使う場合の設定です。sbtで設定変更可能です。
DockerImageのPush先です。
レポジトリ名:{{appName}}を作成して下さい。
関連Key: appName in ECR,ecrRepository
EBSのVersionLabel用のファイルを置くバケットです。
バケット名:app-version-{{appName}}を作成して下さい。
関連Key: appName in EBS,ebsZipBucketName in GTEDeploy
アプリケーション:{{appName}}
環境:{{staging}}-{{appName}}
を作成して下さい。環境の方は、シングルDockerContainerを選択して下さい。
関連Key: appName in EBS, staging, envName
作成したEBSが、ECR,S3へのアクセス権を持っていることを確認してください。 また、AccessKeyを設定していない場合は、ビルドマシンにEBS,ECR,S3へのアクセス権を付与して下さい。
appName := {{your app name}}
の追加だけで動作します。
appName := name.value
とすることで、プロジェクトの名前をそのまま利用可能です。
sbt gdep:doctor
で環境が整っている事を確認できます。 また、問題があった場合は、
last gdep:doctor
を実行することで、解決方法も確認出来ます。
sbt gdep-publish
# stagingを指定してデプロイする場合は引数を渡す
sbt gdep-publish production
でデプロイ可能です。
sbt gdep:autoFix
で自動で環境を構築します。
- Docker用のECR repositoryの作成
- EBS AppVersion保存用のS3 bucketの作成
- EBS Applicationの作成
が行えます。 EBS Environmentは、AWS Consoleなどから自分で作成を行って下さい。