Edited at

Nuxt.jsをGAEにSSRとしてデプロイする際の注意点


はじめに

先日、GAEがNode.js 10に対応に対応されました。

https://cloud.google.com/appengine/docs/standard/nodejs/

Qiita記事を見ると、Nuxt.jsをGAEにデプロイする際の app.yamlファイルの記述が単純でそのままSSRとしてデプロイしてしまうとすぐにメモリ不足で落ちて500エラーとなります。


app.yaml

runtime: nodejs8

env: standard


解決方法

以下のapp.yamlにするとある程度のメモリ不足は回避出来ます。

app.yamlに関する情報はこちらに記載されています。

https://cloud.google.com/appengine/docs/standard/nodejs/config/appref


app.yaml

runtime: nodejs10

instance_class: F2

handlers:
- url: /_nuxt
static_dir: .nuxt/dist/client

- url: /(.*\.(gif|png|jpg|ico|txt))$
static_files: static/\1
upload: static/.*\.(gif|png|jpg|ico|txt)$

- url: /.*
script: auto
secure: always



app.yamlの記述について


runtime

Nuxt.js v2だと思いますので、nodejs10にしましょう。


instance_class

Nuxt.jsでSSRする際はデフォルトのインスタンスF1 だと厳しいので F2 にしましょう。

詳しい料金表はこちらです。

https://cloud.google.com/appengine/pricing


handlers

handlersオプションを使用して、静的ファイルをCDN配信する事が出来ます。

※ここ凄い重要です。

handlersについて

https://cloud.google.com/appengine/docs/standard/python/config/appref#handlers_element

これでも厳しいって方は scaling_elements 等を設定して試行錯誤する必要があると思います。

https://cloud.google.com/appengine/docs/standard/python/config/appref#scaling_elements