AWS ECS利用

Docker利用Webサイト構築

Dockerfile 作成(Docker imageの設定)

git登録するフォルダ直下に Dockerfile を作成 (COPY元フォルダなど作成)
ノーブレイクスペース削除
$ sed -i “s/$(echo -ne ‘\u200b’)//g” Dockerfile

FROM ubuntu:18.04

# Install dependencies
RUN apt-get update && \
 apt-get -y install apache2

# Copy html file to apach directory
COPY src/ /var/www/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

docker build コマンド実行

$ docker images で既存のイメージを確認
$ docker build -t [作成するイメージ名] [Dockerfileのあるディレクトリ]

イメージ作成 (docker build コマンドにより)

$ docker images でイメージの生成確認

コンテナ実行

$ docker ps -a にて現在の状況を確認
$ docker run -d -p 8080:80 –name [コンテナ名] [イメージ名] にて実行
-d はバックグラウンド実行
-p は、[外部受信ポート : 転送先ポート]

curl で確認

$ curl localhost:8080 で接続確認
Cloud9の場合、Previewでも確認できる

コンテナの名前確認

$ docker ps の最後のカラムで名前確認
$ docker exec -i -t [名前] bash(コマンド名)

コンテナイメージのECRへの登録 (Cloud9よりPush)

ECRのマネジメントコンソールから”Repositories”で作成(名前の登録のみ)
→ リポジトリのURIをコピーしておく。
$ docker build -t [ECRのURI:タグ名] [Dockerfileディレクトリ] でイメージ作成
$ aws ecr get-login-password | docker login –username AWS –password-stdin [ECRのURI]
$ docker push [ECRのURI:タグ名] → PushされたかECRコンソールで確認

ECS構築

タスク : コンテナが1つ以上定義されている : タスク内では同一ホストで実行(ポート番号で通信可)
タスク定義 : リソース割り当て、IAMロールやネットワークなど
サービス : タスクが1つ以上定義されている : ELB保有単位、タスク数の維持、オーケストレーション
クラスター : サービスを管理するための単位

クラスターの作成

一度目は必ず失敗する(そのまま再度設定すればOK)

タスク定義の作成

タスクの名称の設定
所属するコンテナ(名称設定とECRのURL:タグ)
利用ポート (80など)

クラスターを選択

サービスをデプロイ (「サービス」(Web)と「タスク」(バッチ)を選択できる)
ファミリー : タスク定義を選択
サービス名 : 任意に設定
タスク数 : 必要な数を設定
ロードバランサー : ALBなどの設定、ターゲットグループなども
ネットワーク : デフォルトのままでも可

実行を確認

クラスター → サービス を確認
「ネットワーキング」タブでELB経由のDNS名がわかり、それにアクセス