概要
前回の記事の段階ではうまくいかなかったのがどうにかECS上でコンテナを動かすことができたのでその流れをまとめます。
Dockerimageの準備
Dockerのイメージを準備します。
-
resize.shを実行します。こちらから取得します。引数でサイズを指定します。今回は20GiBで実施しました。
-
サンプルとするアプリを取得します
git clone https://github.com/docker/getting-started.git
- Dockerfileを作成します。
pushd getting-started/app
touch Dockerfile
vi Dockerfile
- Dockerfileの中身は以下のようにします。
# syntax=docker/dockerfile:1
FROM node:12-alpine
RUN apk add --no-cache python2 g++ make
WORKDIR /app
COPY . .
RUN yarn install --production
CMD ["node", "src/index.js"]
- Docker imageのビルドを行います。またコンテナの動作を確認します。(コンテナの動作確認は実施しなくても構いません)
docker image build -t docker-sample:v1 .
docker run -dp 8080:3000 docker-sample:v1
-
ECRにリポジトリを作成します。手順等は以前の記事を参照してください。ここでは
docker-sample
という名前で作成しています。 -
以下のコマンドでコンテナのイメージをECRにpushします。
AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query 'Account' --output text)
docker image tag docker-sample:v1 ${AWS_ACCOUNT_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/docker-sample:v1
aws ecr --region ap-northeast-1 get-login-password | docker login --username AWS --password-stdin https://${AWS_ACCOUNT_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/docker-sample
docker image push ${AWS_ACCOUNT_ID}.dkr.ecr.ap-northeast-1.amazonaws.com/docker-sample:v1
セキュリティグループの準備
- 今回のアプリはポート3000でアクセスするためセキュリティグループのインバウンドにアクセスできるように設定を行います。
タスク定義登録
- まずタスク定義を登録します。FARGATEを指定します。
クラスターの作成
タスクの作成
- 最後にタスクを実行します。起動タイプは
FARGATE
を選択します。
VPCは作成済みのVPCを指定しています。サブネットも同様です。本来ならここでMulti-AZになるように複数サブネットを指定します。セキュリティグループは前述の段階で作成したセキュリティグループを使用します。ここで作成しても問題ありません。
ロードバランサーは使っていないためパブリックIPの自動割り当てをENABLED
を指定します。
動作確認
最後に
こちらの記事を参考に実施することで無事ECRにpushしたコンテナを動かすことができました。
本来であればロードバランサーなどを使ってのアクセスなどを行うところですがひとまずはECSでコンテナを動かすことに成功しました。