前回、React+nginxの環境をDockerで作ったので、AWSでコンテナを実行してみたいと思う。
1. ECRのリポジトリを作成する
リポジトリを作成
リポジトリ名を入力
ここにimageをアップしていく
2.プッシュコマンドを入力していく
プッシュコマンドを表示をクリックして出てきたコマンドをターミナルに入力していく
ここでログインができない人はaws configure
コマンドを入力して認証を行いましょう
2. VPCを作成する
名前とIPv4 CIDRブロックを指定します。
IPv4 CIDRブロックは192.168.0.0/16
を指定したいと思います。
10.0.0.0/16
でも〇
3. サブネットを作成する
AZが1aのサブネットを作成します
VPC IDは先ほど作成したものを割り当て、IPv4 CIDRブロックは192.168.10.0/24
とします。
アベイラビリティーゾーンはアジアパシフィック東京/ap-northeast-1aを指定します
4. インターネットゲートウェイの作成
インターネットから通信できるようにインターネットゲートウェイを設定します
名前を付けて作成をクリック
次にアクションからVPCにアタッチをクリックして、作成したVPCを選択します
5. ルートテーブルの作成
名前とVPCを選択し、ルートテーブルを作成します
送信先を0.0.0.0/0
、ターゲットをインターネットゲートウェイで先ほど作成したものを選択します
次にサブネットの関連付けをクリックして編集をクリック、サブネットを割り当てます。
6. ECSからECRのイメージを起動する
ECSの画面からクラスターの作成
をクリック
今回はFargateを使用するのでネットワーキングのみ
を選択
次の画面のVPCの作成はチェックを入れない
上から
タスクロール:なし
タスク実行ロール:ecsTaskExecutionRole
Cloud Watchにログを残したいため
タスクメモリ:0.5GB
タスクCPU:0.25vCPU
イメージはECRのリポジトリの↓から取ってくることができます
コンテナポートは80を指定します
Dockerでbuildしたときdocker run --rm -p 8081:80
とし、コンテナ側のポートが80番なので今回も80番に設定する(らしいです)
8. クラスターとタスク定義を結びつける(サービス)
ECSの画面からクラスター→サービスタブへと移動し、作成をクリック
上から
起動タイプ:FARGATE
オペレーティングシステムファミリー:Linux
タスク定義:先ほど作成したもの
リビジョン:1(latest)まだ他のものがないので
プラットフォームのバージョン:Latest
クラスター:先ほど作成したもの
タスクの数:1 コンテナが増えると2とかに増やさなくてはならない?