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名がわかり、それにアクセス