佈署ReactJS App到 App Engine
前言廢話:
最近需要佈署React App 到 Google App Engine
過程還遇到蠻多問題的 來寫個筆記壓壓驚
App Engine 有兩種環境 分別為 standard 和 flexible
standard有免費使用額度 用完才會開始計費 flexible則沒有這個優惠
兩種環境的比較如下圖
以下用standard environment作範例
在開始之前 記得先安裝Cloud SDK
裝完後切換到專案目錄下
在 command視窗下 鍵入
之後會要你登入GCP 和選擇project 跟著步驟選就OK
React 的專案目錄大約如下:
App
|-------- build ======>這個要build過才有
|-------- node_modules
|-------- public
|-------- src
|-------- .gitignore
|-------- package.json
|-------- package-lock.json
我們需要跟App Engine說 如何去佈署一個service
在根目錄下建立一個 app.yaml 檔案
檔名可以隨意 通常的命名規則為 AppName_ServiceName.yaml
檔案內容大概為:
接下來在佈署的時候 App Engine 會去抓專案目錄底下的package.json
去把該裝的dependencies裝好 也可以寫scripts來建置 執行專案
我們的instance要處理web request 就要有web framework 像是 Express.js Koa.js之類的 都行
不過最快的方法是裝 serve這個套件
接著還記得app.yaml裡的 entrypoint ? 我們在package的scripts加上
-l 這個參數是 listening port
build 是我們upload的build 資料夾
Optional:
有用過git的人都知道 git 有個 .gitignore
可以略過不想或不要加入的檔案
gcloud也有 .gcloudignore 很棒吧~
我們除了build 資料夾 跟 package.json需要之外 其他都可以不用上傳
所以檔案大概長這樣
都處理好後就可以來deploy拉~~
在根目錄下 開啟command line 鍵入
執行的過程大概長這樣子
等他跑完就大功告成拉~~
若有任何錯誤還請各位大大指教
最近需要佈署React App 到 Google App Engine
過程還遇到蠻多問題的 來寫個筆記壓壓驚
App Engine 有兩種環境 分別為 standard 和 flexible
standard有免費使用額度 用完才會開始計費 flexible則沒有這個優惠
兩種環境的比較如下圖
<圖1>
以下用standard environment作範例
在開始之前 記得先安裝Cloud SDK
裝完後切換到專案目錄下
在 command視窗下 鍵入
gcloud init
之後會要你登入GCP 和選擇project 跟著步驟選就OK
React 的專案目錄大約如下:
App
|-------- build ======>這個要build過才有
|-------- node_modules
|-------- public
|-------- src
|-------- .gitignore
|-------- package.json
|-------- package-lock.json
我們需要跟App Engine說 如何去佈署一個service
在根目錄下建立一個 app.yaml 檔案
檔名可以隨意 通常的命名規則為 AppName_ServiceName.yaml
檔案內容大概為:
#執行環境 standard 只有 'nodejs10' & 'nodejs12' 可以選 runtime: nodejs10 #每個instance的類別 各類的差別請參考圖2 instance_class: F2 #這個設定要參考 圖2 的 Supported Scaling Types 來做設定 #不過大致上可以分 F開頭的 用 automatic scaling #B開頭的可以用 manual_scaling & basic_scaling #max_instances 可以設定最大的instance數量 automatic_scaling: max_instances: 5 #這裡可以設定如何處理 url pattern #App Engine 可以根據不同的 pattern來執行不同的 application #當然還有靜態的檔案 ((CSS 圖片 JavaScript之類的 #我就不解釋這部份了 文件裡面都有寫 #附上網址 https://cloud.google.com/appengine/docs/standard/nodejs/config/appref?hl=zh_TW handlers: - url: / static_files: build/index.html upload: build/index.html - url: /(.*) static_files: build/\1 upload: build/(.*) #進入點 可以說是佈署完要啟動的 command entrypoint: "npm run remote:start"
接下來在佈署的時候 App Engine 會去抓專案目錄底下的package.json
去把該裝的dependencies裝好 也可以寫scripts來建置 執行專案
我們的instance要處理web request 就要有web framework 像是 Express.js Koa.js之類的 都行
不過最快的方法是裝 serve這個套件
npm install serve
接著還記得app.yaml裡的 entrypoint ? 我們在package的scripts加上
"scripts": { ..., "remote:start": "serve -s build -l 80", ... },
-l 這個參數是 listening port
build 是我們upload的build 資料夾
Optional:
有用過git的人都知道 git 有個 .gitignore
可以略過不想或不要加入的檔案
gcloud也有 .gcloudignore 很棒吧~
我們除了build 資料夾 跟 package.json需要之外 其他都可以不用上傳
所以檔案大概長這樣
.gcloudignore .git .gitignore node_modules/ src/ public/
都處理好後就可以來deploy拉~~
在根目錄下 開啟command line 鍵入
gcloud app deploy #or gcloud app deploy 指定的yaml檔
執行的過程大概長這樣子
等他跑完就大功告成拉~~
若有任何錯誤還請各位大大指教
留言
張貼留言