ElasticBeanstalk with (Multi-container) DockerにCircleCIで自動デプロイ

  • このエントリーをはてなブックマークに追加

皆さんはじめまして。
プログラマーなのに最近インフラばかりイジっている水上です。

今回は弊社で開発中のnendoというサービスの仕組み改善ということで、ElasticBeanstalk with Dockerの自動デプロイに挑戦しました。

CircleCI公式サイトに手順が載っていたのですが、手順が省略されていたり、DockerHubのサンプルがちゃんと動かなかったりなどしていたので今回の記事にまとめました。

せっかちな方は下記を参照。

1. ファイルの設定

まずはcircle.ymlから。



deploy.sh。ここでdockerhubやawsへのアップロード、beanstalkのデプロイコマンドを実行します。



Dockerrun.aws.json.templateファイル。今回のプロジェクトではrailsアプリケーションとnginxでコンテナを分けるため、Multi-container Docker用の設定をしました。



2. CircleCIの設定

DockerHubのログイン情報を設定します。CircleCIのSettings -> Environment Variablesに下記の情報を設定しましょう。

DOCKER_EMAIL DockerHubアカウントのメールアドレス
DOCKER_USER DockerHubアカウントのユーザ名
DOCKER_PASS DockerHubアカウントのパスワード

スクリーンショット 2016-06-22 10.54.52

 

AWSアクセスキーの設定も忘れずに。beanstalk ec2にアクセスできる権限のあるアクセスキーを発行し、CircleCIのSettings -> AWS Permissionsで設定してください。

スクリーンショット 2016-06-22 10.55.15

ここまで設定した状態でdevelopブランチにマージすると自動でデプロイが走ります。以上、お疲れ様でした!

ただ、Dockerのデプロイは時間が少々かかるのが難点ですね。。。

 

docker buildしてbeanstalkのデプロイ実行指示をするまでに8分23秒。

スクリーンショット 2016-06-22 11.47.52

 

その後beanstalk側でDockerイメージを載せ替えるのに3分ほど。

スクリーンショット 2016-06-22 11.48.32

 

まあ、Dockerの便利さを考えればこの問題は目を瞑りますか〜。

 

  • このエントリーをはてなブックマークに追加

コメントを残す

*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)