Docker上で動くLaravel(PHP)をAWS ECSにデプロイする/laravel aws codepipeline codecommit codebuild ECR ECS

Pocket

Docker上で動くLaravel(PHP)をAWS ECSにデプロイする/Laravel codepipeline codecommit codebuild ECR ECS

Laravelプログラムをローカル開発環境で開発完了後、

AWS code4兄弟のcodecommit/codepipeline/codebuild/codepipelineとECRを使用して、

ECSへのデプロイする方法を記載していきます。

 

 

どんな環境?

  • apache
  • laravel(PHP)
  • docker

どんなAWSサービスを使うの?

  • codepipeline
  • codecommit
  • codebuild
  • ECR
  • ECS

具体的にどんな感じにAWS code4兄弟のcodecommit/codepipeline/codebuild/codepipelineとECRを使うか?

ローカル開発環境で開発後、codecommitへpushした後のECSへのデプロイを自動化する

こんなフロー

ローカル開発環境で開発→codecommitへpush→codepipelineが動き出し、codebuildを実行

→実行が終わったらdockerイメージをECRへ格納→再びcodepipelineに戻りECSへのデプロイを実行

Laravelローカル開発環境の作成

Laravelインストール

dockerファイルの作成

apacheのconfファイル作成

docker立ち上げ

動作確認

Laravvel welcome

AWS code4兄弟のcodecommit/codepipeline/codebuild/codepipelineとECRでの作業

codecommit

リポジトリ作成

Codecommit

リポジトリ名:laravel-docker

後は設定を変えずに作成

ECR

リポジトリ名:laravel-dockerで作成する

codebuild

buildspec.ymlの作成

codebuildビルドプロジェクトを作成

Codebuild

プロジェクト名:laravel-docker-build

Codebuild

ソースプロバイダ:CodeCommit

リポジトリ:laravel-docker

CodeCommit

イメージ:「x86_64」を含むものを選ぶ

CodeCommit

特権付与:チェックを入れる

後は設定を変えずに作成

ロール設定

ロール「codebuild-laravel-docker-service-role」に「AmazonEC2ContainerRegistryPowerUser」ポリシーをアタッチする

ECS

ECSクラスターの作成

クラスターを作成ボタンをクリックし、EC2 Linux + Networkingを選択する。

ECS cluster

クラスター名:laravel-cluster

EC2インスタンスタイプ:t2.micro

後は設定を変えずに作成

ECSタスクの定義

ECS task define

タスク名:laravel-docker-task

「コンテナの追加」を押下し、以下の設定をする

ECS task define

 

コンテナ名:laravel-docker-container

イメージ:ECRのリポジトリURI

ECS task define

ホストポート:80

コンテナポート:80

後は設定を変えずにタスクを作成

 

次にタスクを実行する

ECS task

ECSサービス

ECS service

クラスタ:laravel-cluster

サービス名:laravel-docker-service

タスクの数:1

ECS service

ロードバランサの設定をする

後は設定を変えずに作成

codepipeline

まずはcodecommitへpush

codepipeline作成

codepipeline

ソースプロバイダー:AWS CodeCommit

リポジトリ:laravel-docker

ブランチ名:master

codecommit

プロバイダ:AWS CodeBuild

プロジェクト名:laravel-docker-build

codebuild

プロバイダー:Amazon ECS

クラスタ名:laravel-cluster

サービス名:laravel-docker-service

後は設定を変えずに作成

Laravel動作確認

EC2インスタンスのIPをコピーして、ブラウザーに貼り付けアクセスしてみる

laravelのwelcome画面が表示されれば成功

Laravel welcome