TerraformでFargateを構築してGitHub Actionsでデプロイ!Laravel編
- ダウンロード商品電子版(PDF/EPUB/MOBI)¥ 1,000
- ダウンロード商品無料サンプル(PDF)¥ 0
⭐️累計200部突破!⭐️ 本書では、nginx + Laravel + MySQL + Redisで構成されるアプリケーションをAWS上に構築する方法を解説します。 nginxとLaravelは、AWSのコンテナオーケストレーションサービスであるECS(Fargate)を使用します。 また、AWSの各リソースはTerraformで構築し、デプロイはGitHub Actionsで行います。 ページ数:307 電子版形式:PDF, EPUB, MOBI
対象読者
・LaravelをAWS Fargateに⾃動デプロイする⽅法を知りたい⼈ ・上記のAWS環境をTerraformで構築する⽅法を知りたい⼈ ・GitHub Actions の基本的な使い⽅を知りたい⼈ これらを実際に手を動かしながら効率良く学びたい方におすすめです。
目次
1章. Laravelアプリケーションの作成 2章. Terraformのセットアップ 3章. ECRの構築とTerraformの基本操作 4章. GitHub ActionsでイメージをECRにプッシュする 5章. ネットワーク(VPC)の構築 6章. ドメインの取得とロードバランサーの構築 7章. ECS(Fargate)の構築 8章. GitHub ActionsでFargateにデプロイする 9章. Laravelとnginxを本番環境向けに修正する 10章. RDSとプライベートホストゾーンの構築 11章. ElastiCache(Redis)の構築
サンプルコード
本書で取り扱うコードは GitHub で公開しています。 Terraformのリポジトリ https://github.com/shonansurvivors/laravel-fargate-infra Laravel, GitHub Actionsのリポジトリ https://github.com/shonansurvivors/laravel-fargate-app その他、各章終了時点のコードも⽤意しているので参考にしてください。それらへのリンクは、各章の冒頭に記載するようにしています。
環境
本書は、MacOS(非M1) で動作確認を⾏なっています。その他、使⽤するバージョンは以下の通りです。 • Laravel 8.* • nginx 1.20 • MySQL 8.0 • Redis 6.* • Terraform 1.0.0 • Terraform の AWS プロバイダ 3.38.0 • AWS Fargate 1.4.0
本書で学べる内容
Terraform ・init/plan/apply/destroy ・state list/state show/state pull/state mv ・variable/output/LocalValue/count/for_each/三項演算子 ・jsonencode/keys/values ・module/remote state/data source ・S3を使ったtfstate管理方法 ・リソースのライフサイクルを考慮したtfstate分割 ・tfenvの使用方法 ・VPC/サブネット/Elastic IP/セキュリティグループ ・インターネットゲートウェイ/NATゲートウェイ ・Route53/ACM/ALB ・ECR/ECS ・RDS/ElastiCache ・IAM/S3/CloudWatch Logs AWS ・ECSクラスター/サービス/タスク/タスク定義の概念 ・ECS Execの使用方法 ・Route53を使った独自ドメインの取得方法 GitHub Actions ・ワークフロー/ジョブ/ステップの概念 ・環境変数/Secret/if/各種コンテキストの使い方 ・アクションの使い方(AWS認証情報設定/キャッシュ/ECRログイン) ・ECRにイメージをプッシュする方法 ・ECS(Fargate)にデプロイする方法 ・ECS(Fargate)を使ってLaravelからRDSをマイグレーションする方法 nginx ・アクセスログのIPをALBではなくクライアントにする方法 ・ALBからのヘルスチェックをアクセスログ対象外にする方法 Laravel ・ログをCloudWatch Logsに連携する方法 ・predisを使ってセッションをRedisで管理する方法 等
変更履歴
2021/9/5 ver1.1.0 --- 全体 ・プロによる日本語表現の校正 ・コード編集箇所を太字ではなくコメント文で表現 等 PDF版のみ ・章扉の廃止 --- 2021/8/26 ver1.0.8 --- 2.3.2 tfenv のインストール エラーになる場合の対処を記載 3.21.3 terraform plan により差分が無いことを確認する 「Note: Objects have changed outside of Terraform」と表示されない場合も考慮した記載に見直し その他全体 軽微な誤記修正 --- 2021/8/10 ver1.0.7 --- 8.4.4 タスク定義ファイルの⾒直し ecs-task-def.json 以下のスネークケースになっていない部分を訂正 data.aws_iam_role.ecs-task-execution.arn data.aws_iam_role.ecs-task.arn --- 2021/8/1 ver1.0.6 --- 10.15 動作確認 11.11 動作確認 末尾に余分な「}」があったのを削除 # if: github.ref == 'refs/heads/main'} --- 2021/7/27 ver1.0.5 --- 7.5.1 ディレクトリと各種 tf ファイルの作成 locals.tfの作成が漏れていたので追記 7.5.2 CloudWatch ロググループ 誤)cloudwatch.tf 正)cloudwatch_log.tf なお、cloudwatch.tfで作成済みの方はそのまま進めても支障はありません。 7.11.2 ECS サービスの作成 data.tfへのremote_stateへの追記が漏れていたので訂正 --- 2021/7/25 ver1.0.4 --- p101ほか 誤) "172.32" 正) "172.31" 既に172.32でチュートリアルを進められている方は、ver1.0.3のPDFを使ってそのまま進めて問題ありません。 ただし、GitHubのサンプルコードは172.31に修正されているので、その部分は172.32に読み替えるようにしてください。 ---