【前提条件】
・イメージは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