ECS はクラスタ上でコンテナ実行しますが、その元となる Docker イメージは別の場所から取ってくる必要があります。
今回は、Cloud9 で作成したイメージを Elastic Container Registry (ECR)
と呼ばれるサービスに登録します。
コンテナイメージを保管する場所を イメージレジストリ
と呼びます。Docker イメージを確実に pull できないと、コンテナを安定して動作させることが出来ないので、レジストリには高い可用性とスケーラビリティが求められます。
マネージドコンソールで ECR を開きます。
今回使用するECRリポジトリを作成します。新しいバージョンではオプションがいくつか増えていますが、リポジトリ名のみ入力して残りはデフォルトのままで構いません。
プッシュコマンドの表示
を選択すると下の画面なるので、メモ帳などにコマンドを全て
メモします。
ここで、Cloud9 タブに戻り、作成した Docker イメージを ECR にアップロードしていきます。
Cloud9 の画面を消してしまった方はマネージドコンソールの Cloud9 から再度開くことができます。
ECRの画面でメモをしたコマンドをそのまま順番に実行します。
下記コマンドは一例です。プッシュコマンドの表示
でコピーしたコマンドを1つづつペーストして実行します。
まず、Cloud9 の環境から ECR にログインを行います。
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin {アカウントID}.dkr.ecr.ap-northeast-1.amazonaws.com
Login Succeeded
と出たら、コンテナイメージをビルドし、tagを付けます。
docker build -t {ユーザ名}-rails-container .
docker tag {ユーザ名}-rails-container:latest {アカウントID}.dkr.ecr.ap-northeast-1.amazonaws.com/{ユーザ名}-rails-container:latest
最後に、タグ付けされたイメージを ECR に push します。
docker push {アカウントID}.dkr.ecr.ap-northeast-1.amazonaws.com/{ユーザ名}-rails-container:latest
これで ECR へ Rails アプリケーションの Docker イメージが登録できました。
再度、ECR コンソール画面に戻ってイメージを確認します。イメージ URI
は後ほど利用するのでコピーしておきます。
いよいよEC2上で Docker コンテナを動かす準備ができました。
アプリケーション改修のたびに、Docker イメージをビルドしなおして、ECRにプッシュするのは大変です。
AWS の Code シリーズのサービスを使うことでこのような処理を 自動化
するパイプラインを構築することができます。 https://aws.amazon.com/jp/blogs/news/build-a-continuous-delivery-pipeline-for-your-container-images-with-amazon-ecr-as-source/