質問: 作成中のポートフォリオが、ローカル開発環境では正常に動作していた箇所が、ECSで動かすとどうにも動かなくなってしまうので質問させていただきます。 ### 【私のレベル】 現在就活用のポートフォリオ作成中の初学者です。 HTML、CSS、Ruby、Railsなどは一応学習済みといったレベルです。 ### 【環境】 ローカル開発環境 * Windows10 * Ruby 2.5.3 * Rails 5.2.3 * Docker for Windows * Docker 19.03.4 * docker-compose 1.24.1 RailsコンテナとNginxコンテナを分けた構成にしています。 ECS * Docker 18.09.9-ce ローカル開発環境と同様にRailsとNginxコンテナを分けています。 アプリのGithub https://github.com/takamuraTK/comic_farm ### 【現在までの経緯】 現在はDockerを勉強中でして、 * ローカル開発環境でdocker-compose(windows環境)を用いてアプリを開発 * Dockerイメージをビルドし、ECRにプッシュ * プッシュしたイメージでECSでタスク定義を作成 * EC2テンプレートを使用したクラスターを作成し、それ用のサービスも作成 * 実際にアクセスしてみるとローカルでは見なかった異常が見られる という経緯です。 ### 【問題点】 * GemでインストールしたFontAwesomeがあり、表示されるはずのアイコンが表示されない。 * 「いいねボタン」的なものがいくつかあり、いずれもAjaxを実装していてその場で表示が切り替わるようになっているのですが、実際にボタンを押すと ``` ActionController::UnknownFormat in コントローラー名#アクション名 コントローラー名#アクション名 is missing a template for this request format and variant. request.formats: ["text/html"] request.variant: [] ``` と言ったRailsエラーが表示されます。 この機能はこちらの記事を参考に作成しており、 https://qiita.com/*tambo*/items/45211df065e0c037d032 Gemのjquery-railsを必要としていることから、こちらが正常に機能していないのかなという考えです。(FontAwesomeも機能していなかったので) * CSSにて設定したフォントが反映されない。(優先順位の低いフォントに変わっている) 以上の問題がローカルの開発環境では全く起こらなかったのですが、ECSで運用するとなると発生してしまいます。 逆に、上記以外の機能は正常に動作します。 ### 【自分で行った検証】 * FontAwesomeをGemではなくCSSとしてhtmlのhead内に記述 →正常にアイコンが表示された。(Gemが正常に機能しない問題?) * ECS環境をEC2ではなくFargateにしてみる →同様の現象 * EC2で手動でインスタンスを作成し、そこにDockerをインストールしgit cloneしてdocker-composeで動かしてみる(ECSは全く関与しない状態) →同様の現象 * さらにEC2でローカルのファイルをSCPでそのままアップロードしたものを動かしてみる →同様の現象 となっており、ローカル側では間違いなく正常に動いていたものが、AWSで動かそうとするとどうにもうまく行きません。 最初はECSでEC2インスタンスを動かしたときのみに発生するものだと思い、ECS側の何かしらの設定に不備があるのかと思いました。 しかし検証の欄に書いた通り、EC2単体でDockerを動かしも同様の問題が発生してしまったのでどうにも解決の見込みがありません。 環境の違いとしてはWindowsとLinuxなのですが、どういった違いでこういった現象が起こっているのか見当がつかないので、質問させていただきます。 どうかよろしくお願い致します。
回答: > > Dockerイメージをビルドし、ECRにプッシュ > > > とのことですが、Windows環境でビルドしたものをプッシュしてECSで使用しているということでしょうか。 もしそうであれば、Linux環境でビルドしてECRにプッシュした後、そのイメージを使用してECSへデプロイしてみてください。 font-awesome-rails, jquery-rails共に、依存関係でnokogiriがインストールされますが、nokogiriはnative extensionを含むため、違うOS上でビルドされたパッケージは動かない可能性が高いです。 追記:表示されたアイコンのキャプチャです。 !イメージ説明