LoginSignup
2
2

More than 3 years have passed since last update.

【その1】CircleCI+ECS+ECR+CloudFrontでDockerのコンテナと静的ファイルをデプロイする方法について

Last updated at Posted at 2020-12-19

前提

Dockerのコンテナが継続的にデプロイされる環境をCircleCIとAmazon ECS, ECRをセットアップし、Assetsファイル(CSS、JS)をs3のバケットに入れCloudFrontに送りデプロイする作業を行いました。
その一連の流れについて簡単にまとめてみたいと思います。

大まかな手順

ECS+ECR側のセットアップ

  1. ECSクラスターを作成する
  2. コンテナインスタンスを作成する(今回はEC2を選びました)
  3. ECRリポジトリを作成する
  4. ECSのタスク定義を作成する
  5. ALBの作成をする
  6. ECSサービスの作成をする

S3+CloudFrontのセットアップ

  1. S3のバケットを作成する
  2. CloudFrontのアカウントを作成する
  3. CloudFrontのOrign NameにS3のバケットを指定する
  4. Alternate Domain Names (CNAMEs)を指定する
  5. CloudFrontの諸々のチューニングをする

全体図

スクリーンショット 2020-12-19 23.39.23.png

ECS+ECR側のセットアップについて

1. ECSクラスターを作成する

そもそもECSとは?

スクリーンショット 2020-12-20 0.21.43.png

image.png

スクリーンショット 2020-12-20 0.22.57.png

  • クラスターテンプレートはEC2 Linux + ネットワーキングを選択する
  • クラスター名を入力する ex) sample-cluster
  • 空のクラスターを作成する
  • インスタンスの設定はここではしない スクリーンショット 2020-12-19 23.45.03.png

2. コンテナインスタンスを作成する (今回はEC2を選びました)

image.png

  • AMIはamzn2-ami-ecs-hvm-2.0を選択する
  • インスタンスサイズは一旦t2.microを選択する
  • ネットワーク(vpc)を選択する
  • サブネットを選択する
  • IAMロールでecsのInstanceのロール(作成済み)を選択する
  • ユーザーデータを以下のように入力する
    • YOUR_CLUSTER_NAMEのところにクラスター名を入れる
#!/bin/bash
echo ECS_CLUSTER=YOUR_CLUSTER_NAME >> /etc/ecs/ecs.config

image.png

  • 新しいセキュリティグループを作成する
  • キーペアを作成する

3. ECRリポジトリを作成する

そもそもECRとは?

スクリーンショット 2020-12-20 0.27.31.png

  • プライベートを選択する
  • リポジトリ名を入れる ex) sample-repository スクリーンショット 2020-12-19 23.54.00.png

4.ECSのタスク定義を作成する

  • タイプはEC2を選択する
  • 定義名を入れる ex) sample-task
  • ロールはecsTaskExecutionRoleを選択する
  • ネットワークはbridgeを選択する
    • ネットワークについて知りたい場合はこのサイトを参考にするといい
  • タスクサイズはここでは選択せずコンテナでサイズを選択する
  • コンテナ名を入力する ex) sample-app
  • イメージに先ほど作成したECR URIにタグをつけて入力する ex) xxxxxxxxxxxxx.com/sample-repository:latest
  • メモリ制限を入れる
    • 最初は300-500でいいかも
  • ポートは動的ポートマッピングにしたいのでホストを0でコンテナを80にしておく

スクリーンショット 2020-12-20 0.05.02.png

5.ALBの作成をする

  • ALB名を入れる ex) alb-sample
  • リスナーを入れる ex) HTTP, HTTPS
  • アベイラビリティーゾーンを入れ、 vpcをEC2インスタンス作成時の時と同じものを選ぶ
  • サブネットを選択する
  • サーバー証明書を選択する
  • セキュリティグループはEC2インスタンス作成時に作ったものを選択する
  • ターゲットグループを新しく作成する
  • ターゲットの種類はインスタンスを選択する

スクリーンショット 2020-12-20 0.11.35.png

6. ECSサービスの作成をする

  • 起動タイプはEC2を選択する
  • タスクは先ほど作成したものを選択する ex) sample-task
  • クラスターは先ほど作成したものを選択する ex) sample-cluster
  • サービス名を入力する ex) sample-service
  • タスク数は今のところ1を選択する
  • ALBは先ほど選択したものを選ぶ
  • ターゲットグループは先ほど作ったものを選択する

Amazon-ECS (4).png

以上が大まかなECSとECRのセットアップ手順です。

S3+CloudFrontのセットアップ

これは次の記事にまとめていこうと思います!!

2
2
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
2
2