背景
Reactで作成したSPAをコンテナとしてECSにデプロイしています。
ですが、ECSにデプロイする必要ってないんじゃないかと思いまして。。。
というのも、バックエンドとして用意しているAPIと通信するのはクライアントとなるブラウザです。なので、ホスティングだけしてくれるサービスを使用すればいいんじゃないかと。
というわけで実際にNetlifyにホスティングしてみました。
Reactアプリのビルド
npm ci
からのnpm run build
でビルドします。
ビルドの成果物はbuild/
にできあがっています。
netlifyにデプロイ
まずはログイン。
netlify login
デプロイします。
netlify deploy --dir=build --site=dfb7b87c-42d6-478a-8546-7605babfafbb --prod
以下のようにデプロイできます。画面も表示できました!!
Deploying to main site URL...
⠋ Uploading blobs to deploy store...
Netlify Build
────────────────────────────────────────────────────────────────
❯ Version
@netlify/build 29.41.2
❯ Flags
deployId: 67ab0b6a39e50e754d72ac06
dir: build
open: false
prod: true
prodIfUnlocked: false
site: dfb7b87c-42d6-478a-8546-7605babfafbb
skipFunctionsCache: false
❯ Current directory
/home/hoge/hoge
❯ Config file
No config file was defined: using default values.
❯ Context
✔ Finished uploading blobs to deploy store
✔ No cached functions were found
✔ Finished hashing
✔ CDN requesting 7 files
✔ Finished uploading 7 assets
✔ Deploy is live!
Build logs: https://app.netlify.com/sites/hogehoge/deploys/67ab0b6a39e50e754d72ac06
Function logs: https://app.netlify.com/sites/hogehoge/functions
Unique deploy URL: https://67ab0b6a39e50e754d72ac06--hogehoge.netlify.app
Website URL: https://hogehoge.netlify.app
またしてもhistoryApiFallbackが
画面が表示できたので、/login
をリロードすると、、、。
「404 NOT FOUND」です。
_redirects
を用意する
Netlifyでもnginxと同様に、historyApiFallbackを考慮する必要がありました。
具体的には、_redirects
というファイルを用意しておいて、ここに以下の1行を書きます。このファイルはビルドした成果物のbuild/
直下に配置します。
/* /index.html 200
で、改めてNetlifyにデプロイすると、期待した通りの動作になります。