Nuxt を Google App Engine へデプロイする
Nuxt を Google App Engine にどうやってデプロイするのか?
Google App Engine へのデプロイは Google のクラウドサービスで一般的な Nuxt アプリケーションをホストするための迅速で簡単な解決策です。
このガイドでは、アプリケーションをローカルに構築し、かつプロジェクトフォルダ全体を Google App Engine に簡単にアップロードするまでを行います。アップロード後、Google App Engine は自動的に package.json の start スクリプトを起動し、アプリケーションはすぐに利用可能になります。
はじめに
Google Cloud アカウントがあるか、プロジェクトと空の Google App Engine を Google App Engine にセットアップしているか確認して下さい。さらにこちら で説明されているように、Google から Cloud SDK (CLI) をダウンロードしてインストールし、Google Cloud Account でログインして下さい。
アプリケーションの設定
一般的な Nuxt アプリーションを App Engine へデプロイするために追加する必要があるのは app.yaml と呼ばれるファイルだけです。ルートプロジェクトディレクトリにその名前の新しいファイルを作成し、以下の内容を追加してください:
runtime: nodejs10
instance_class: F2
handlers:
- url: /_nuxt
static_dir: .nuxt/dist/client
secure: always
- url: /(.*\.(gif|png|jpg|ico|txt))$
static_files: static/\1
upload: static/.*\.(gif|png|jpg|ico|txt)$
secure: always
- url: /.*
script: auto
secure: always
env_variables:
HOST: '0.0.0.0'
またフレキシブルな環境の場合、最小構成は以下になります:
runtime: nodejs
env: flex
アプリケーションのビルドとデプロイ
次にアプリケーションを npm run build か yarn build でビルドします。
現時点で、アプリケーションは Google App Engine にアップロードされる準備ができています。以下のコマンドを実行してください:
gcloud app deploy app.yaml --project [project-id]
ほら!今 Nuxt アプリケーションは Google App Engine にホストされています!
さらなる詳細情報
-
app.yaml ファイルの
instance_class属性はアプリケーションインスタンスのクラスをセットします。F2 インスタンスは完全に無料ではなく、しかし Nuxt アプリケーションの実行に必要な最小のメモリを備えています。 -
package.json の
startはデプロイ後に実行するコマンドであることを確認してください。もし普段start:prod、もしくは他のコマンドで実行しているなら、アプリケーションは期待していたように働かないでしょう。
deploy コマンドには project-name ではなく project-id を指定しているか確認してください。これら 2 つは異なるものですが混合しやすいです。
Leoš Literák
Trizotti
Clément Ollivier
Sébastien Chopin
Marcello Bachechi
Rodolphe
Thomas Underwood
Shek Evgeniy
felipesuri
Lukasz Formela
Hugo Torzuoli
Sylvain Marroufin
Kareem Dabbeet
tramplay
Daniel Roe
verebelyicsaba
Adam
Nate Butler
Sandra Rodgers
Arpit Patidar
Matthew Kuehn
Steven DUBOIS
Travis Lindsey
syagawa
Maxime
かる
Al Power
Florent Delerue
quanghm
José Manuel Casani Guerra
Unai Mengual
kazuya kawaguchi
Michael Lynch
Tomachi
pooya parsa
Meir Roth
Brett
Adam Miedema
Thomas Bnt
Kazuki Furukawa
Anthony Ruelle
Christophe Carvalho Vilas-Boas
Roman Harmyder