【AWS】Docker で作成した Java Web アプリのコンテナ環境をイメージ化して ECR にプッシュし ECS にデプロイする手順

公開日時:2022年04月24日 / 最終更新日時:2022年04月24日

Docker で作成した Java Web アプリのコンテナ環境をイメージ化して ECR にプッシュし ECS にデプロイする手順について解説します。

 

前回、以下の記事を記述しました。

【Java】TomcatでWebアプリを作成しDockerコンテナ環境にデプロイして実行する手順

 

こちらの記事では Tomcatで Web アプリ(Hello Worldを表示するだけ)を作成し、それを Linux の Docker コンテナ環境上にデプロイをする手順について解説しました。

今回ではそのコンテナをイメージ化して ECR にプッシュして ECS にデプロイします。

 

 

ECR でリポジトリを作成する

AWS 管理コンソールにログインして Elastic Container Service(ECS)に移動します。

 

 

 

 

 

左側ペインより)「Amazon ECR」「リポジトリ」に移動します。

 

 

 

 

「リポジトリを作成」ボタンをクリックします。

 

 

以下のように設定します。

 

 

 

その他はデフォルトのまま「リポジトリを作成」ボタンをクリックします。

 

 

 

 

作成したリポジトリを選択して「プッシュコマンドの表示」ボタンをクリックします。

 

 

 

 

 

表示されたプッシュコマンドを実行していきます。

 

 

 

Dockerfileの作成

プッシュコマンドを実行する前に Dockerfile ファイルを作成します。

作成した tomcat_test.war ファイルを保存している同じディレクトリに移動します。

 

■WAR ファイルと同じディレクトリに移動する

[root@localhost tomcat_test]# ls
tomcat_test.war

 

 

■Dockerfile ファイルを作成する

[root@localhost tomcat_test]# vi Dockerfile
FROM tomcat:9.0.46

 

COPY tomcat_test.war $CATALINA_HOME/webapps/

 

Dockerfile の中身をシンプルです。

たった2行しかありません。

シンプルにするために定番の「apt-get update」コマンドなどは省略しています。

 

Tomcat の Docker イメージ

https://hub.docker.com/_/tomcat

 

 

この公式サイトによると

になるので

tomcat_test.war は /usr/local/tomcat/tomcat_test.war に配置されることになります。

 

 

 

ビルドをして Docker イメージを作成する

Dockerfile を作成したら次は Dockerfile に基づきビルドをして Docker イメージを作成します。

 

■ビルドをする

[root@localhost tomcat_test]# docker build -t helloworld-java . 
Sending build context to Docker daemon   5.12kB 
Step 1/2 : FROM tomcat:9.0.46 
9.0.46: Pulling from library/tomcat 
d960726af2be: Pull complete 
e8d62473a22d: Pull complete 
8962bc0fad55: Pull complete 
65d943ee54c1: Pull complete 
da20b77f10ac: Pull complete 
8669a096f083: Pull complete 
e0c0a5e9ce88: Pull complete 
f7f46169d747: Pull complete 
42d8171e56e6: Pull complete 
774078a3f8bb: Pull complete 
Digest: sha256:7170333206a612dbeedfbc7bb8caeee972eadca1cc4a72e6b1 
Status: Downloaded newer image for tomcat:9.0.46 
 ---> c43a65faae57 
Step 2/2 : COPY tomcat_test.war $CATALINA_HOME/webapps/ 
 ---> a1f72bd5fc23 
Successfully built a1f72bd5fc23 
Successfully tagged helloworld-java:latest 
[root@localhost tomcat_test]# 

 

 

イメージにタグ付けをする

ビルドが完了したらイメージにタグ付けをします

 

■タグ付けをする

[root@localhost tomcat_test]# docker tag helloworld-java:latest 295332586563.dkr.ecr.ap-northeast-1.amazonaws.com/helloworld-java:latest

 

 

タグ付けをしたイメージを ECR にプッシュする

次にタグ付けをしたイメージを ECR にプッシュします。

 

■タグ付けをしたイメージを ECR にプッシュする

[root@localhost tomcat_test]# docker push 295332586563.dkr.ecr.ap-northeast-1.amazonaws.com/helloworld-java:latest 
The push refers to repository [xxxx.dkr.ecr.ap-northeast-1.amazonaws.com/helloworld-java] 
cef2bcb4e81c: Pushed 
daf63ef0ddbb: Pushed 
3307ffa538c1: Pushed 
8f8b5acac684: Pushed 
15786a1cf1cb: Pushed 
6f770cdc9ebf: Pushed 
3fc095fab4a2: Pushed 
685934357c89: Pushed 
ccb9b68523fd: Pushed 
00bcea93703b: Pushed 
688e187d6c79: Pushed 
latest: digest: sha256:c1fff02901dd3cf5243633b8f72a7454830d166 size: 2629 
[root@localhost tomcat_test]# 

 

 

 

ECR にプッシュされていることを確認

ECRにプッシュされていることを確認します。

 

 

 

 

IAM ロールを作成する

ECS でクラスターを作成する前に IAM ロールを作成しておきます。

 

IAM ロールの設計

初めに設計ですが、今回以下の4つの IAM ロールを作成します。

 

 

IAM ロール(ecsRole)の作成

AWS 管理コンソールより「IAM」に移動します。

 

 

 

左側ペインより「ロール」をクリックします。

 

 

「ロールを作成」ボタンをクリックします。

 

 

 

 

信頼されたエンティティタイプで「AWS のサービス」を選択します。

 

 

 

 

 

ユースケースで「Elastic Container Service」を選択して「次へ」ボタンをクリックします。

 

 

 

 

デフォルトで設定されているポリシーを確認し「次へ」ボタンをクリックします。

 

 

 

 

ロール名を入力します。

 

 

 

 

 

「ロールを作成」ボタンをクリックします。

 

 

 

 

 

 

IAM ロール(ecsAutoScalingRole)の作成

次に ecsAutoScalingRole を作成します。

※今回はこのロールを使用しませんが今後使用するので作成しておきます。

 

 

「ロールを作成」ボタンをクリックします。

 

 

 

 

信頼されたエンティティタイプで「AWS のサービス」を選択します。

 

 

 

 

ユースケースで「Elastic Container Service Autoscale」を選択して「次へ」ボタンをクリックします。

 

 

 

 

デフォルトで設定されているポリシーを確認し「次へ」ボタンをクリックします。

 

 

 

 

ロール名を入力します。

 

 

 

 

「ロールを作成」ボタンをクリックします。

 

 

 

 

 

 

IAM ロール(ecsTaskExecutionRole)の作成

次に ecsTaskExecutionRole を作成します。

 

「ロールを作成」ボタンをクリックします。

 

 

信頼されたエンティティタイプで「AWS のサービス」を選択します。

 

 

 

ユースケースで「Elastic Container Service Task」を選択して「次へ」ボタンをクリックします。

 

 

 

 

デフォルトで設定されているポリシーを確認し「次へ」ボタンをクリックします。

 

 

 

ロール名を入力します。

 

 

 

「ロールを作成」ボタンをクリックします。

 

 

 

 

 

 

 

IAM ロール(ecsInstanceRole)の作成

次に ecsInstanceRole を作成します。

 

「ロールを作成」ボタンをクリックします。

 

 

 

信頼されたエンティティタイプで「AWS のサービス」を選択します。

 

 

 

ユースケースで「EC2 for Elastic Container Service」を選択して「次へ」ボタンをクリックします。

 

 

 

デフォルトで設定されているポリシーを確認し「次へ」ボタンをクリックします。

 

 

 

ロール名を入力します。

 

 

 

 

「ロールを作成」ボタンをクリックします。

 

 

 

 

 

 

ECS へのデプロイメント

ECS へデプロイします。

 

AWS 管理コンソールより ECS(Elastic Container Service)に移動します。

 

 

 

 

左側ペインより「クラスター」「クラスターの作成」ボタンをクリックします。

 

 

 

 

以下のように設定をして「次のステップ」ボタンをクリックします。

 

 

 

 

クラスター名(tomcat-test)を入力して「作成」ボタンをクリックします。

 

 

 

 

 

ECS クラスターが作成されることを確認します。

 

 

 

 

 

 

 

 

 

タスク定義の作成

次に「タスク定義」を作成します。

タスク定義とはコンテナの設計図でタスク定義通りに自動的に環境が構築されます。

 

左側ペインより「タスク定義」をクリックし「新しいタスク定義」ボタンをクリックします。

 

 

 

 

 

起動タイプに「FARGATE」を選択して「次のステップ」ボタンをクリックします。

 

 

 

 

 

 

以下のように設定します。

 

 

 

以下のように設定して「コンテナの追加」ボタンをクリックします。

今回のアプリは「Hello World」を表示するだけなので最低のスペックを選択します。

 

 

 

以下のように設定します。

 

 

 

以下、ポートマッピングの説明です。

 

 

 

以下のデフォルトのまま進みます。

 

 

 

 

 

 

以下もデフォルトのまま進みます。

 

 

 

 

以下もデフォルトのまま進みます。

 

 

 

「追加」ボタンをクリックします

 

 

 

 

 

下図のようにコンテナが追加されていることを確認します。

 

 

 

 

最後に「作成」ボタンをクリックします。

 

 

 

 

タスク定義が作成されることを確認します。

 

 

 

 

 

 

サービスの作成

次にサービスを作成します。

 

左側ペインより「クラスター」をクリックして作成したクラスター名(tomcat-test)をクリックします。

 

 

 

 

 

 

「サービス」タブを選択し「作成」ボタンをクリックします。

 

 

 

 

 

以下のように設定します。

 

 

 

 

以下のように設定します。

 

 

 

 

 

「次のステップ」ボタンをクリックします。

 

 

 

 

 

以下のように設定します。

セキュリティグループの「編集」ボタンをクリックします。

 

 

 

以下のように設定します。

設定したら「保存」ボタンをクリックします。

 

 

 

 

 

「保存」ボタンをクリック後、セキュリティグループが設定されていることを確認します。

 

 

 

 

 

 

デフォルトのまま進みます。

 

 

 

 

「次のステップ」ボタンをクリックします。

 

 

 

 

 

 

最後に確認をします。

 

 

 

 

 

 

 

最後に「サービスの作成」ボタンをクリックします。

 

 

 

 

 

 

 

以下のように ECS サービスが作成されることを確認します。

 

 

 

 

 

 

 

動作確認

最後に動作確認をします。

 

対象のタスクをクリックします。

 

 

 

 

 

 

下図のようにステータスが「RUNNING」になっていることを確認します。

 

 

 

 

 

ブラウザを起動し以下のURLを入力し「Hello World」が表示されることを確認します。

URL ← http://<パブリックIP>:8080/tomcat_test/tomcat/hello

 

 

 

 

Posted by 100%レンタルサーバーを使いこなすサイト管理人

コメントを残す

メールアドレスが公開されることはありません。

AlphaOmega Captcha Medica  –  What Do You See?
     
 

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Secured By miniOrange