初心者向けAWSにDockerをデプロイする

Docker環境を取り扱うためのAWS環境のセットアップ手順と、AWS環境へのデプロイを実施し、その構成の学習を目的とします。

最終目標としてDocker環境をサーバにデプロイし、本運用を見越したDocker環境でのリリースを実施します。

■環境

 ・Windows 10

 ・VSC version 1.83.1

 ・Docker Desktop

 ・AWS

1. Amazon ECS


今回はAmazon ECSを使用してDocker環境をEC2にデプロイを実施してみます。

ECSに関しては今回初めて使用するため、改めてECSについて調べてみました。

1-1. そもそもAmazon ECSとは

そもそもAmazon ECSとは、Amazon Elastic Container Serviceの略で、コンテナ化されたアプリケーションを簡単にデプロイ、管理、スケーリングできる、完全マネージド型のコンテナオーケストレーションサービスのこと。

引用:https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/Welcome.html


このコンテナを管理するサービスのことを、オーケストレーターといいます。

オーケストレーターでコンテナ管理すること、そのものはオーケストレーションといいます。


要するにAmazon ECSを使うことにより、アプリケーションのデプロイの管理が簡易化できるということ。

1-2. デプロイタイプ

ECSのデプロイタイプについて、ECSのデプロイ方法は3つあります。

 ・ローリングアップデート

 ・Blue/Greenデプロイ

 ・外部デプロイ
の3つが存在します。


今回はローリングアップデートを実施してみます。

ローリングアップデートはデプロイ中に進行度に応じて環境が混線してしまうため、デプロイ中は意図せぬ動作をする恐れがあるため、メンテナンス画面が必須になり、要件によってはベストプラクティスに足りえないのですが、今回はデプロイの試験運用のため、コストが低いこちらを使用していきます。

1-3. Amazon ECSの設定

■AWS CLI をインストール


まずはECSに対してローカル環境をpushできるようにするため、AWS CLIをインストールします。

$ sudo apt  install awscli
$ aws --version


■IAMユーザーを作成

次にデプロイ用のIAMユーザーを作成します。

AWS のコンソールから IAM サービスにアクセスし、名前はdeploy-userとして、ユーザーを作成します。

今回はアクセスキーを使用してAWS CLIを利用するため、Identity Centerでユーザーを作成するのではなく、IAMユーザーを作成します。


つぎにポリシーをアタッチします。

このポリシーはAmazonECRへのアクセスを許可するものです。

 既存のポリシーをアタッチから以下のポリシーの項目を付与します。

 ・AmazonEC2ContainerServiceRole

 ・AmazonEC2ContainerRegistryFullAccess

ユーザーの作成が完了すると、ユーザーのアクセスキーやパスワードなどの情報が記載されたcsvをダウンロードできるので、そちらをダウンロードしておきます。

■アクセスキー設定


次にアクセスキーを作成します。

以前はユーザーを作成した際に自動でアクセスキーが割り当てられていたのですが、仕様が新しくなり、手動でアクセスキーを発行しないとcsvにアクセスキーが記載されないようです。


IAMユーザーからアクセスキーの発行を選択し、ユースケースをコマンドラインインターフェイス (CLI)(このアクセスキーを使用して、AWS CLI から AWS アカウントへのアクセスを有効化しようとしています。)を選択してアクセスキーを発行します。

アクセスキーを発行するとcsvがダウンロードできますので、そちらを元に先ほどのIAMユーザーのcsvと照らし合わせてAWS CLIからユーザーの設定を行います。

$ aws configure
$ sAWS Access Key ID [None]: {取得したアクセスキーID を入力}
$ AWS Secret Access Key [None]: {取得したシークレットアクセスキーIDを入力}
$ Default region name [None]:   ap-northeast-1
$ Default output format [None]: json


この状態でIAMユーザーの確認を実施します。

$ aws configure list


こちらで先ほど登録した結果が表示されているようであればOKです。

■Dockerを起動

前々回で作成したDockerを起動します。

Docker Desktop for Windowsを起動し、下記コマンドでコンテナを立ち上げます。

docker-compose up -d


立ち上がったらdocker psを実行し、各イメージコンテナが正しく立ち上がっているか確認します。

問題ないようであればブラウザを開き、http://localhost:8080を入力してLaravelのスタート画面が表示されていることを確認します。

「localhost:80」をブラウザで開き、”Hello World” が表示されているか確認。

■ECSリポジトリに Push

いよいよECSの設定をしていきます。

まずリポジトリの作成を実施します。

今回はIAMによるアクセスなので、公開範囲はプライベートとし、リポジトリ名はdocker-deploy-testとしました。



次にリポジトリにローカル環境をpushできるように設定します。

2. 最後に

ここまででデプロイの設定はできましたので、次回はソースを更新し、デプロイを実行してみるところまで実施しようと思います。