目次
- AWS ECRにプッシュ
- DockerイメージをAWSのコンテナレジストリにアップ。
- AWS ECS + Fargateにデプロイ
- クラウド上でコンテナを起動。
- クラウド上でのアクセス
- apiを確認
この記事はDockerでSpring Bootをコンテナ化しaws ECR・ECSを利用しデプロイ part 1の続きになっております。もしよろしければpart1も見ていただけると幸いです。
https://qiita.com/jugon_p_p/items/2233da5d31ffa6e50688
- apiを確認
⚠️ 警告: ここに注意してください!
本環境を実行すると、ECSの利用料金が発生する可能性があります。
費用の発生を避けたい方は、十分ご注意ください。
AWS ECRにプッシュ
DockerイメージのAWSのコンテナレジストリにアップロードする手順
ECRとは?
- Amazon Elastic Container Registry (ECR) は、Dockerイメージを安全に保管し管理できるAWSのサービス。
- AWSの他サービス(例: ECS)と連携しやすい。
手順
- ECRリポジトリ作成
- AWSマネジメントコンソールのECRサービスから、リポジトリを作成。
- AWS CLIでECRにログイン
各PCにAWS CLIをインストールする必要有
aws ecr get-login-password --region ap-northeast-1 | docker login --username AWS --password-stdin 522585361401.dkr.ecr.ap-northeast-1.amazonaws.com
-
522585361401.dkr.ecr.ap-northeast-1.amazonaws.comはアカウントID + リージョンを含むECRリポジトリのURL
- Dockerイメージにタグ付け
- ローカルのイメージにECRリポジトリのURLをタグとしてつける
docker tag springboot-demo:latest 522585361401.dkr.ecr.ap-northeast-1.amazonaws.com/springboot-demo:latest
- イメージをプッシュ
docker push 522585361401.dkr.ecr.ap-northeast-1.amazonaws.com/springboot-demo:latest
- これでイメージがECRにアップロードされ、クラウドで使える状態に。
AWS ECS + Fargateにデプロイ
ECRにあるDockerイメージを使ってコンテナを起動する設定をAWS ECSで行う
ECSとは?
- Elastic Container Serviceの略で、コンテナの管理とオーケストレーションを担うサービス。
- Fargateはサーバーレスでコンテナ実行できる起動タイプ。EC2管理が不要。
手順
- クラスターを作成
- ECSの画面からクラスターを作成。
- クラスタータイプは「Networking only (Fargate)」を選択。
- タスク定義を作成
- コンテナの設定を登録するためのテンプレート。
- コンテナ名、イメージURL(ECRのURI)、CPU・メモリ、ポートマッピング(例: コンテナポート8080)を指定。
- ネットワークモードは awsvpc(Fargateの場合必須)。
- サービス作成
- タスク定義を使ってサービスを作成
- サービスはクラスター内でタスクを複数起動・管理。
- 起動タイプは「Fargate」、タスク数を指定(例: 1)。
- ネットワーク設定
- VPCのサブネットを選択(パブリック or プライベート)。
- セキュリティグループでコンテナに割り当てる通信ルールを設定(例: ポート8080を0.0.0.0/0に開放)。
本番環境ではこのポート許容先を指定する必要有
- 起動
- サービスを作成すると、Fargateが自動でコンテナを起動。
- ECSのタスクが「RUNNING」状態になれば稼働中。
クラウド上でのアクセス
起動したコンテナに外部からアクセスするためのポイント
- 公開IPの確認
- FargateタスクにパブリックIPを割り当てている場合、タスク詳細画面で「パブリックIP」を確認。
- 例: 54.92.52.223
- セキュリティグループの設定確認
- ポート8080(コンテナで使っているポート)が、0.0.0.0/0に開放されていることを必ず確認。
- URLにアクセス
- ブラウザやcurlで http://<パブリックIP>:8080/ にアクセス。
- Spring Bootアプリが起動していればAPIや画面が見れる。
AWSにデプロイするためのまとめ
| ステップ | 詳細 |
|---|---|
| ECRリポジトリ作成 | Dockerイメージ保存用リポジトリをAWSで作成 |
| ECRログイン | aws ecr get-login-password でDockerをECRにログイン |
| Dockerイメージタグ付け | ローカルイメージにECRリポジトリURIのタグをつける |
| ECRへプッシュ | docker push コマンドでイメージをアップロード |
| ECSクラスター作成 | Fargate用のクラスターを作成 |
| タスク定義作成 | コンテナの設定(イメージ、リソース、ポートなど)を登録 |
| サービス作成 & 起動 | タスクをFargateで実行するサービスを作成して起動 |
| アクセス | パブリックIPとセキュリティグループの設定を確認し、APIにアクセス |