EC2に手動デプロイしたdocker-composeをECSに移行する
この記事を参考にします。
VPC関連、RDS作成済みなのでECRの設定から開始。
ECRリポジトリ作成後のDockerクライアント認証コマンド実行後、エラー発生。下記の記事で解消された。
ECSのタスク実行後、以下の記事のエラーが出現。
こちらの記事で対処中・・・タスク実行後、nginxコンテナエラー。
詳細→ECS>クラスター>アプリクラスター名>タスク>logs>nginxコンテナ
2021/10/19 22:12:01 [crit] 8#8: *16 connect() to unix:///app_name/tmp/sockets/puma.sock failed (2: No such file or directory) while connecting to upstream
●nginx.conf内の記載ミス
→ファイル内に記載されたapp
を自分のリポジトリ名に変更することで解消
再度イメージ構築、ECRにpush後、下記の状況。
ログで確認すると500エラーになっている模様。
AWSコンソールでログチェック↓
- - [22/Oct/2021:02:35:51 +0000] "GET /root HTTP/1.1" 500 1635 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36"Safari/537.36"
nginxコンテナでエラーが出ている模様なので、下記を実行する。
①nginx.confのserver_name
を今のパブリックIPに設定し、ECRにfd_tube_app_webリポジトリを新しくpush
②ECSタスクのnginx_webコンテナをあらたしいリポジトリURIに設定。タスクを実行
変わらん。
即500が帰ってくるのでECS外のセキュリティグループがうまくマッチしていない?
→セキュリティグループの見直し
→ecs nginx 500 で検索🔍
ローカルでは正常に表示される。
●ローカルの設定
・Dockerfile(rails)のENV RAILS_ENV=production
をコメントアウト
・Dockerfile(nginx)のADD後のファイル参照を./containers/nginx/nginx.conf /etc/nginx/conf.d/my_app.conf
からnginx.conf /etc/nginx/conf.d/my_app.conf
へ
・nginx.confのlisten後にserver_name lcalhost
を明記
・docker-compose 開発環境用のDBコンテナを明記
そもそもFargateでのコンテナ間の通信方法ががローカルのDocker環境と異なるから設定ファイルを変更しないといけないっぽい。
container/nginx内に以下を追加。同時にDockerfile(nginx)のCOPY先を追加。
・default.config
・nginx.conf
上記を実行し、ECRリポジトリを更新、ECSのタスクとサービスを更新→パブリックIPにアクセスで以下の表示
Welcome to nginx!
If you see this page, the nginx web server is successfully installed and working. Further configuration is required.
For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.
Thank you for using nginx.
ECSのnginxコンテナでは404...
●ローカルでdocekr-composeを使用して動作良好だったため、本番用のイメージもdocker-composeで作成(新しくdocker-compose.prod.ymlとDockerfile.prodを作成)
●nginxの設定を変更
●endpoint.sh内でassets:precompileの実行
上記を実行後、パブリックIPにアクセス、無事railsアプリの表記が完了!!
ALBの設定でつまづき。
ヘルスチェックがHealth checks failed with these codes: [502]
で通らない。
●対応
以下の記事でNginxファイルを編集、ECSサービスのヘルスチェック猶予期間を伸ばす(3600秒)とHealtyに‼︎
CircleCIの設定
nginx_deployの- aws-ecr/build-and-push-image:
でbuild image error発生。
NginxのDockerfile内でdefault.confのCOPYができないとのこと・・・
(パスはあっている。1度目のnginx.confはコピーできて次のdefault.confのコピーでエラーになる)
一旦コメントアウトで対応。
・githubにpushが反映されていること
・ECSのリポジトリとタスク更新されページが表示されていることを確認した