2023/10/17 GAE で .next を /tmp に移して起動
できるか?
.next/cache
app.yaml の entrypoint で起動前に .next を /tmp に移して symlink する
いろいろやっていけそうかと思いきや
Exceeded soft memory limit of 384 MiB with 627 MiB after servicing 0 requests total. Consider setting a larger instance class in app.yaml.
.next/ がでかくて F1 instance だとダメだった
.next/ 消して build した直後
code:du1
$ du -d 1 .next
48K .next/types
395M .next/cache
14M .next/server
6.3M .next/static
418M .next
いろいろ
code:app.yaml
...
entrypoint: pnpm run start:prod
code:package.json
"scripts": {
...
"start:prod": "sh scripts/prod.sh"
}
code:scripts/prod.sh
mv .next /tmp/.next
ln -s /tmp/.next /workspace/.next
exec next start -p $PORT
F2 instance で試す
Exceeded soft memory limit of 768 MiB with 885 MiB after servicing 0 requests total. Consider setting a larger instance class in app.yaml.
がはは
まあ node 自体のメモリもいるしね
選択的に symlink すると F1 でもいけるかなあ
ほとんどが webpack による bundle だろう
画像の optimize はオフ or .next/cache/images/ を symlink
Progressive ISR な app directory のページキャッシュは .next/server/app/ 以下にできるのでそれを
code:prod.sh
mkdir -p /tmp/.next/cache/images
ln -s /tmp/.next/cache/images /workspace/.next/cache/images
mkdir -p /tmp/.next/server
mv /workspace/.next/server/app /tmp/.next/server/app
ln -s /tmp/.next/server/app /workspace/.next/server/app
exec next start -p $PORT
F2 のまま ↑ 試す
メモリは足りてるけどだめ
https://gyazo.com/d0dfcbe2966c49a6659b90b4ea01fd12
あー mv や symlink 作ること自体が /workspaces への書き込みなのか...そりゃそうか
ローカルでは存在しないパスへの symlink を先に置いておくのを試したい
でもいかにもアップロード前後で弾かれそう
next を hack するほうがはやそうだなあ前覗いた時は簡単にはいじれなさそうだったけど
これでやってみる