maco's life

主にエンジニアリングと読書について書いていきます。

ECSへCircleCI + ecs-deployを使ってデプロイする

ESCへの自動デプロイの設定をやったのでその備忘録です。ecrにリポジトリを作って、コンソール上から手動プロイできる状態まではできている前提で話します。

circleciへ環境変数を設定する

ますcircleciのwebコンソールのtarget-project -> settings -> Environment Variablesにデプロイに必要な環境変数を設定します。

  • AWS_ACCOUNT_ID
  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY
  • AWS_DEFAULT_REGION

以上の4つを設定します。

circle.yml

公式ドキュメントと大体同じです。

自分はとりあえずビルド・デプロイをしたかっただけなので下記のようにしました。

machine:
  services:
    - docker

dependencies:
  post:
    - docker build -t test-app .

deployment:
  prod:
    branch: master
    commands:
      - ./deploy.sh

実際に本番で使う時は公式ドキュメント同様にtestは入れたほうが良さそうです。

deploy.sh

デプロイ処理はecs-deployにまかせています。 自分でデプロイ処理書くのは骨が折れそうなので、OSSでメンテ(されていく|できる)ものを使いました。

#!/bin/sh
set -ex

eval $(aws ecr get-login --region ${AWS_DEFAULT_REGION})
docker tag test-app:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/test-app:latest
docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/test-app:latest
./docker/ecs-deploy -c ap -n test-app -i $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/test-app:latest

こんな感じです。

作ったばかりでまだ問題点とかはこれからでてきそうだけど、とりあえずこれでデプロイできるところまで行けました。