movee(モビー) オノデラのブログ

(株)movee代表。週末は自社サービスを作っています。

LaravelアプリケーションをECSで動かす自分的ベストプラクティス

【前提条件】

・イメージは1つにしておく。 Dockerfileの作り方を学んでおく必要がある。2つだと登録できないので。そのため、phpコンテナの中にnginxを同居させなければいけない。

・ ローカルで動かないイメージは本番でも動かない(当たり前) nginxの設定を変更する必要があったのだが、ローカルで動かないのに何を血迷ったかECRにあげた。ローカルで動かないイメージはECSでも動かない

【LaravelのDockerイメージをECSで動かす手順】

AWSは仕様が頻繁に変わるので手順を細かく書かない。というより何度もスクラップ&ビルドを繰り返して体で覚えるべき。 ヒントとして手順を書く。

・ローカルでimage作成

docker build -t php_app .などでイメージを作る ・ECRでリポジトリ作成 コンパネでポチポチして作成

・ECRにイメージをpush

ECR見ればコマンド書いてあるのでそれに沿ってプッシュする(regionやprofileオプションを忘れずに) 成功すればECRにイメージが登録される。

・Cluster作成

Clusterはネットワークのみ、を選択してポチポチする。サクッと作れるはず。キーなどは作成不要。

・タスク定義作成

タスク定義は一番大事かもしれない。docker-compose.ymlに近い。タスク定義をもとにサービス(いわゆるコンテナ)を作るので重要。Fargateを選んで作る。コンテナ追加箇所があるのでECRのイメージURLを貼り付けて連携する。タスクロール、タスク実行ロールはそれぞれecsTaskExecutionRoleを選ぶ。メモリやCPUはとりあえず最小でいいかと思う。

・サービス(クラスター)作成

クラスターからサービスタブの中でサービス作成。 Fargate選んでコンパネでポチポチする。VPCなどを選ぶのでなければ事前に作っておくか、この流れで作っても良い。PENDINGからRUNNINGになるので、パブリックIPをブラウザに打ち込んでサイトが表示されればOK