让我先从上下文开始。我有一个 React 应用,在构建过程中占用大约 8192MB 空间。部署到 GAE 失败了,因为我们可以使用的传真内存是 3072 MB(使用 instance_class:F4_1G)。
我想知道我们是否可以在 GAE 部署构建期间指定更多资源?构建后,应用程序可以在较小的服务器(如 F2 (768 MB))中运行。
答案1
答案2
似乎 GAE 没有在构建期间定义更高资源并在之后进行更改的选项。此外,GAE 的最大资源为 F4_1G(3072 MB,2.4 GHz)。所以我决定采用不同的方法。
- 使用云构建来构建(我们可以在其中配置具有更高资源的机器)
- 在 app.yaml 上,用空白覆盖标准 npm build。
因此我的 cloudbuild.yaml 看起来像:
steps:
- name: 'node:14.21-buster'
entrypoint: 'npm'
args: ['install']
- name: 'node:14.21-buster'
entrypoint: 'npm'
args: ['run', 'build']
env:
- NODE_OPTIONS=--max-old-space-size=8192
- GENERATE_SOURCEMAP=false
.... MORE STEPS HERE .....
- name: 'gcr.io/cloud-builders/gcloud'
entrypoint: 'gcloud'
args: ['app', 'deploy']
substitutions:
_CLOUDSDK_COMPUTE_ZONE: us-central1-c
_CLOUDSDK_COMPUTE_REGION: us-central1
options:
machine_type: E2_HIGHCPU_8
app.yaml 如下所示:
runtime: nodejs14
build_env_variables:
GOOGLE_NODE_RUN_SCRIPTS: '' # prevent running npm run build on GAE
entrypoint: node server/server.js