初心者向け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. 最後に
ここまででデプロイの設定はできましたので、次回はソースを更新し、デプロイを実行してみるところまで実施しようと思います。