2023.01.20  

【ESC】タスク定義にDockerコンテナイメージをデプロイする(fargate)

AWS    

AWS ESCで、タスク定義にDockerコンテナのイメージを適用してデプロイする方法についてメモ書きします。(Fargate利用)

前提

ECSを作成する対象のVPC、サブネット、セキュリティグループが作成されていること

ECSのクラスター、サービス、タスク定義が作成済みであること(Fargate利用)

ECRにDockerイメージをpushするためのリポジトリが作成済みであること

タスク定義に必要なロールが作成済みであること

デプロイするアプリケーションがDockerファイルと共に作成済みであること

ECRへイメージをpushする

ローカル端末のターミナルで作業を行います。
デプロイ対象のDockerfileのあるディレクトリで下記コマンドを実行します。(ビルドの実行)

docker build -t bilddata .

ECRに接続するためのコマンドを実行します。
123456789123箇所を自分の環境にあったアカウントIDへと書き換えます。
<ECRのリポジトリ名>には事前に作成したECRリポジトリの名前を指定します。

docker tag bilddata:latest 123456789123.dkr.ecr.ap-northeast-1.amazonaws.com/<ECRのリポジトリ名>:latest

下記コマンドを実行するとイメージがECRにプッシュされます。

docker push 123456789123.dkr.ecr.ap-northeast-1.amazonaws.com/<ECRのリポジトリ名>

マネージメントコンソールでECRにアクセスし、対象のECRリポジトリにlatestタグのイメージがpushされていることを確認します。

ECSタスクにコンテナイメージを適用する

マネージメントコンソールでECSにアクセスし、左ペインの「タスク定義」をクリックします。
先ほどpushしたイメージを設定したいタスクのチェックボックスにチェックを入れて、「新しいリビジョンの作成」をクリックします。

「新しいリビジョンの作成」をクリックすると「タスク定義の新しいリビジョンの作成」画面に遷移します。

その画面の「コンテナ名」まで移動し、編集対象のコンテナをクリックします。

クリックすると「イメージ」欄が表示されるので、適用対象のイメージがあるECSへの接続先を設定します。

下記画像ではECRのリポジトリ名を「test/api」としています。
その後ろに「:latest」と指定することで、どのイメージタグがついているイメージかを指定できます。

イメージの編集が完了したら「更新」ボタンを押します。

「タスク定義の新しいリビジョンの作成」ページに戻ったら「作成」ボタンをクリックします。

ECSサービスの更新

ECSサービスの更新を行うことで、先ほど設定したタスク定義の内容を反映します。

マネージメントコンソールから「ECS --> クラスター --> 対象クラスター名 --> 対象サービス」に移動し、「更新」ボタンをクリックします。

タスク定義欄のファミリーで先ほど定義したタスク名を選択します。

リビジョンについても先ほど定義したタスクの最新版(latest)を選択します。

後は画面下記の「次のステップ」ボタンを繰り返し押下して、「ステップ 5: 確認」まで移動し、「サービスの更新」ボタンを押下します。

更新が始まるとAWS CodeDeployでデプロイ処理が始まります。

※ サブネット等のネットワーク情報に誤りがあると下記画面のようにInstallで失敗し、1時間ほど動かないことがあります。(通常なら5分ほどで終了) その際はサービスの再作成を行い、ネットワーク設定をやり直す必要があります。(更新はできない)

デプロイが成功すると、下記画面の下部に表示されているタスクの「前回のステータス」が「RUNNING」となります。

これで作業完了です。

コメント
現在コメントはありません。
コメントする
コメント入力

名前 (※ 必須)

メールアドレス (※ 必須 画面には表示されません)

送信