0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【前編】Laravel×Docker×EC2 オリプロ初デプロイで地獄を見た話(概要&準備編)

Last updated at Posted at 2025-05-01

どうもこんにちは。この記事は、Laravel製SNS「Apprentory」のデプロイに苦しみまくった一人の開発者の、リアルな戦いの記録です。

このシリーズでは、以下の3部構成でお届けします。

  • 前編:構成概要・環境準備・事前に知っておけばよかったこと
  • 中編:Docker・Laravelの本番構成と落とし穴
  • 後編:HTTPS化・エラー修正・CloudWatchでの監視まで

🎯 どんなサービス?

教材やオリジナルプロダクトをシェアできるSNS「Apprentory」を、AWS EC2(Amazon Linux)上でDocker+Laravelで動かしています。

  • Laravel + MySQL + Apache
  • Dockerコンテナで構築(MySQL含む)
  • ACM + Route53 で HTTPS 対応(※ALBは使用せずEC2に直接対応)

🔥 地獄の始まり

開発はローカルで順調に動く。けど、いざ本番環境にデプロイしようとすると…

Dockerコンテナ起動しない

本番だけLaravelの.envが読み込まれない

CloudWatchが何も表示してくれない

何が起きてるのかすら分からない。とにかく辛い。何回コンテナ再起動したか覚えてない。SSHもタイムアウトして無言のエラー地獄。

ただ、あの地獄を超えたことで「本番環境の設計と向き合う力」がめちゃくちゃ鍛えられました。


☁️ 使ったAWS構成

項目 内容
EC2 Amazon Linux 2023
Docker Laravelアプリ、MySQL含めコンテナ構成(docker-compose使用)
Route53 独自ドメイン設定(apprentory.click)
ACM HTTPS対応(証明書発行、ALBなし)

⚙️ 前準備で絶対やっておくべきこと

1. .env をローカルと本番で分けろ!

本番で .env を読み込まない原因、だいたいこれ:

APP_ENV=production

が抜けてる、または php artisan config:cache してない。

php artisan config:clear
php artisan config:cache

この2行を本番環境で叩かないと、Laravelは.envの変更に気づいてくれません。

2. EC2のSSH接続、Elastic IP必須

再起動でIP変わる → VSCode繋がらない → 永遠の「初期化中」
Elastic IPで固定するのマジ大事

3. Docker内MySQLはIPで繋げ!

localhost にしてると繋がらない。docker inspect でIP調べてピンポイント指定が必要。
(本当は docker-compose のサービス名で解決するのが正道)

mysql -h 172.21.0.3 -u user -p

💡 今回のまとめ(前編)

  • ローカルで動いてても、本番は別物と思え
  • Elastic IPと.env構成は先にちゃんと設計しとこう
  • SSHで毎回詰まって心折れそうになる
  • でも、ちゃんと学びに変えればこの経験は一生モノ

次回は実際の Docker構成やLaravelの設定 にどんなトラップが潜んでたか、中編でがっつり晒していきます!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?