はじめに
今どきの新人は新人研修でコンテナ周りの扱いを一通りやって簡単なサービスを作るところまで行くらしい。
いいなぁ新人は。僕は教えてくれる人がいないから自分で勉強するしかない。
ハンズオンという良い勉強資材があるらしい。
今回はこれをやりました。
ECRでリポジトリ作る
WebコンソールでECRのページにいく。左のメニューからリポジトリを選択。
リポジトリを作成→リポジトリ名を記入してそのまま作成。
URIをコピーしておく。12ケタ.dkr.ecr.ap-northeast-1.amazonaws.com/h4b-ecs-helloworldという風になってるはず。
Cloud9で作業
Cloud9を適当に立てる。以下Cloud9でdockerコマンドを打っていく。
Dockerfileかく
画面でDockerfileを作って保存する。起動したらapacheが動くというだけのもの。
FROM ubuntu:18.04
# Install dependencies
RUN apt-get update && \
apt-get -y install apache2
# Install apache and write hello world message
RUN echo 'Hello World!' > /var/www/html/index.html
# Configure apache
RUN echo '. /etc/apache2/envvars' > /root/run_apache.sh && \
echo 'mkdir -p /var/run/apache2' >> /root/run_apache.sh && \
echo 'mkdir -p /var/lock/apache2' >> /root/run_apache.sh && \
echo '/usr/sbin/apache2 -D FOREGROUND' >> /root/run_apache.sh && \
chmod 755 /root/run_apache.sh
EXPOSE 80
CMD /root/run_apache.sh
コンテナイメージつくる
タグはさっきつくったECRリポジトリ名にしておく。
docker build -t 12ケタ.dkr.ecr.ap-northeast-1.amazonaws.com/h4b-ecs-helloworld:0.0.1 .
コンテナつくれたのを確認する
docker images
ECRにログインする
aws ecr get-login-password | docker login --username AWS --password-stdin 12ケタ.dkr.ecr.ap-northeast-1.amazonaws.com
さっきつくったECRリポジトリにプッシュ
docker push 12ケタ.dkr.ecr.ap-northeast-1.amazonaws.com/h4b-ecs-helloworld:0.0.1
これで、さっきのECRリポジトリにイメージが入ったはず。
VPCを作成
Webコンソールで適当にパブリックVPCを作成する。
VPCウィザードつかうとゲートウェイもルーティングも全部やってくれる。こんなに簡単だったんか。
セキュリティグループで、インバウンドのHTTPを開けておく。
ECSでFargateクラスターつくる
クラスターの作成:さっきのVPCを指定して作成
タスク定義の作成:さっきECRに突っ込んだイメージのURIを指定した定義をつくる。
ポートマッピングで80をマップしとく。CPU、メモリなどもここで指定
サービスのデプロイ:作ったクラスターのサービスタブでデプロイ
必要タスク数(今回は2)、ALB、リスナー(80)、ターゲットグループ、VPC、サブネット、セキュリティグループを指定
完成~!
デプロイが終わったらネットワーキングタブのオープンアドレスを開いてみる。無事開ければOK。
あとタスクの一個を手動で落としてみたり、タスクを増やしてみるオマケをやってもよい。
片付け
ALB、TargetGroup
ECS サービス、クラスター
VPC
ECR
Cloud9
を消す。
まとめ
今回のハンズオンは
・Cloud9でdockerイメージ作成し、ECRにつっこむ作業
・ECRにあるイメージでECSのFargateサービスクラスターをALB付きで起動する作業
を行いました。AWS便利だねぇ。