LoginSignup
3
6

More than 3 years have passed since last update.

AWSのアカウント作った直後の状態からECS+FargateでTomcatのDockerコンテナを起動する

Last updated at Posted at 2020-02-24

超・初心者向け、AWSのアカウント作った直後の状態からECS+FargateでTomcatのDockerコンテナを起動するまで。
最低限、AWSのマネジメントコンソールをちょこちょこでも触ったことがあるくらいが前提。

全体の流れ。
1. EC2の起動
2. Dockerのインストール
3. セキュリティグループの設定
4. Tomcatの起動
5. CLIの設定
6. DockerコンテナのイメージをECRに登録
7. IAMポリシーとロールの設定
8. ECS on FargateでECRに登録したDockerコンテナのイメージを起動

1. EC2の起動 ~ 2. Dockerのインストール

↓この辺の記事を参考にして、EC2でインスタンスを起動してDockerをインストールする
【Qiita】AWSのEC2でDockerを試してみる

EC2へのTelnetログインどうやんねん、って人は↓これを読む。
【AWS公式】PuTTY を使用した Windows から Linux インスタンスへの接続

3. セキュリティグループの設定 ~ 4. DockerでTomcatの起動

↓この辺の記事を参考にして、DockerでTomcatを起動する。
【Qiita】Docker上でnginx+tomcat を構築してみる。

当たり前だが、セキュリティグループでこの辺で使うポートを開放しておかないと通らない。

5. CLIの設定

さてDockerコンテナをレジストリに登録するぞ!と思ってもまだ早い。まずはCLIを使えるようにしておかないと、aws ecr のコマンドが実行できない。
今回は、AWS標準のAMIからEC2インスタンスを起動しているので、CLIはデフォルトでインストール済み。↓これを参考にしながら、初期設定を行う。IAMユーザの登録もこの中で説明されている。
【AWS公式】AWS CLI の設定

6. DockerコンテナのイメージをECRに登録

↓を見ながら作ってきたDockerコンテナのイメージをECRにPUSHする。
【Qiita】AWS ECRにdockerイメージを登録する

7. IAMポリシーとロールの設定

さて、いよいよECS on Fargateでデプロイだ!と思ったけどちょっと待って。
ECSを実行するためのIAMポリシーとロールを設定しないと、コンテナを起動することができないのである。
【AWS公式】Amazon ECS タスク実行 IAM ロール

8. ECS on FargateでECRに登録したDockerコンテナのイメージを起動

↓この辺を参考にしながら、タスク定義→クラスタ作成→サービス作成をする。
【Qiita】Amazon Fargate でコンテナを動かす

気を付けなければいけないのは「ポートマッピングの設定」で、Tomcatは80番ポートを起動することができないので、ポートマッピングでコンテナ側のポートを8080にしないといけない。

あと、タスク定義の↓ここが思いっ切り罠で、イメージのURI間違えてもタスク自体は作れてしまう。で、実行しようとしたときにエラーが出て何のログも吐かないので悩まされるという。
キャプチャ.PNG

やったーこれでTomcat起動したぞー!あとは、応用すれば色々起動できるようになるはず。

その他

Dockerのログ確認

試行錯誤しているうちに docker run してもコンテナが起動しない(正確には、おそらく起動後にexitしていたのだと思う)ことがあり、↓この辺をテキトーにやって調べたり直したりはした。
【Qiita】dockerでコンテナが立ち上がらないときやってみること

Dockerイメージの掃除

色々と docker run とかやってると、docker images したときに謎のイメージが増殖したりしているので、↓これを参考にキレイにした。別にVMなんだから後生大事にせず潰せばいいんだけどね…。
【Qiita】Dockerイメージとコンテナの削除方法

タスク定義の削除

ECSのタスク定義を登録すると、簡単に消すことができなくなる。
↓これで消せる。厳密にはINACTIVEにして見えなくしているだけのようだ。完全に消し去ることはできなそう?
【Qiita】タスク定義の登録解除

サービスディスカバリからのサービス名の削除

どうにも、サービスディスカバリに登録したサービスが上手く削除できないことがあるようだ。
Route53の利用料がかかっている気がするのでCLIから以下の手順で削除する。
※しかも同じサービス名で起動できなくなっちゃうし。

サービス一覧の取得
$ aws servicediscovery list-services
サービス削除
$ aws servicediscovery delete-service --id=[一覧で取得したId]
3
6
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
3
6