ローカルで作った Nginx のイメージを ECR にあげて Fargate で動かしてみる
参考
ローカルでイメージファイルを作成する
まずは docekr-compose を使って Nginx のイメージを作成してみます。
docker-compose.yml は次の通りです。
version: "3"
services:
nginx:
image: nginx:latest
container_name: hogehoge_container
ports:
- "80:80"
コンテナ起動させます。
docker-compose up -d
コンテナにログインします。
docker exec -it hogehoge_container /bin/bash
せっかくなのでファイルを編集して Nginx の部分を hogehoge に変更してみます。
vi /usr/share/nginx/html/index.html
exit しコンテナからログアウトたら、コンテナからイメージを作成します。
docker commit hogehoge_container hogehoge_image
これで hogehoge_image:latest と言うイメージが出来上がりました。latest は、タグを指定すれば変更できます。
リポジトリを作成する
- ecs と検索して「elastic container service」をクリックする。
- サイドメニューの「リポジトリ」をクリックする。
- タブが「Private」になっているのを確認する。
- 「リポジトリを作成」をクリックする。
- 「リポジトリ名」に「hogehoge_repository」と入力する。
- 「リポジトリを作成」をクリックする。
イメージをプッシュする
- 一覧から「リポジトリ名」の「hogehoge_repository」をクリックする。
- 右上の「プッシュコマンドの表示」をクリックする。
- 「1. 認証トークンを取得し、レジストリに対して Docker クライアントを認証します。」の下の値をコピペで実行し認証する。
- 「2. 以下のコマンドを使用して、Docker イメージを構築します。...(略)...」の手順は、ローカルでイメージを作成したので飛ばす。
- 「3.構築が完了したら、このリポジトリにイメージをプッシュできるように、イメージにタグを付けます。」の下の値をコピーして、[イメージ名]:[タグ名]の箇所を作成したものに書き換えて実行する。※下記参照
- 「以下のコマンドを実行して、新しく作成した AWS リポジトリにこのイメージをプッシュします。」の下の値をコピペして実行する。
- 「閉じる」をクリックする。
- 「イメージタグ」の箇所が「latest」となっている項目が増えているのを確認する。
※ 上記 5 の変更箇所の例。
docker tag hogeohoge_repository:latest xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/hogeohoge_repository:latest
↓
docker tag hogehoge_image:latest xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/hogeohoge_repository:latest
クラスターを作成する
- サイドメニューの「クラスター」をクリックする。
- 「クラスターの作成」をクリックする。
- 「ネットワーキングのみ」が選択されているのを確認する。
- 「次のステップ」をクリックする。
- 「クラスター名」に「HogehogeCluster」と入力する。
- 「VPC の作成」にチェックを付ける。(CIDR ブロックとサブネットはデフォルトのまま)
- 「作成」をクリックする。
- 「クラスター」の表示をクリックする。
タスクを定義する
- サイドメニューの「タスクの定義」をクリックする。
- 「新しいタスク定義の作成」をクリックする。
- 「FARGATE」が選択されているのを確認する。
- 「次のステップ」をクリックする。
- 「タスク定義名」に「hogehoge_task」と入力する。
- 「タスクメモリ (GB)」で「0.5GB」を選択する。
- 「タスク CPU (vCPU)」で「0.25vCPU」を選択する。
- 「コンテナの追加」をクリックする。
- 「コンテナ名」に「hogehoge_container」と入力する。
- 「イメージ名」に「xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/hogeohoge_repository:latest」と入力する。(レポジトリ → イメージ → URI のコピーで値が取得できる。)
- 「ポートマッピング」に「80」と入力する。
- 「追加」をクリックする。
- 「作成」をクリックする。
- 「タスクの定義の表示」をクリックする。
サービスを登録する
- サービスの設定
- サイドバーの「クラスター」をクリックする。
- 「クラスター名」の「HogehogeClasster」をクリックする。
- 「サービス」タブの「作成」をクリックする。
- 「FARGATE」にチェックを付ける。
- 「オペレーティングシステムファミリー」で「Linux」を選択する。
- 「タスク定義」で「hogehoge_task」と入力する。
- 「クラスター」が「HogehogeCluster」になっているのを確認する。
- 「サービス名」に「hogehoge_service」と入力する。
- 「タスクの数」に「1」と入力する。
- 「次のステップ」をクリックする。
- ネットワーク構成
- 作成された VPC とサブネットがあるのでそれぞれ選択する。
- 「次のステップ」をクリックする。
- Auto Scaling (オプション)
- 「サービスの必要数を直接調整しない」にチェックがついているのでそのままにする。
- 「次のステップ」をクリックする。
- 確認
- 「サービスの作成」をクリックする。
- 起動ステータス
- 「サービスの表示」をクリックする。
Fargate の Nginx が起動しているのを確認する
- サイドメニューの「クラスター」をクリックする。
- 「タスク」タブをクリックする。
- 「タスク」の ID をクリックする。
- 「ENI ID」の ID をクリックする。
- 該当するネットワークインターフェイスの「パブリック IPv4 アドレス」を確認する。
- 確認した IP アドレスをブラウザに入力する。
- 「hoehoge!...(略)...」と記載のある Nginx のページが開かれているのを確認する。
ディスカッション
コメント一覧
まだ、コメントがありません