【问题标题】:gcloud does not skip root level filesgcloud 不会跳过根级文件
【发布时间】:2018-11-13 10:40:21
【问题描述】:

我正在尝试将 SPA 部署到 GAE。我正在按照他们的static website example 中给出的配置示例进行操作。我的项目文件夹结构如下:

D:\Projects\Proj1
    |-node_modules
    |-src
    |-www
    |-.babelrc
    |-.gitignore
    |-app.yaml
    |-package.json
    |-package-lock.json

而我的app.yaml如下:

runtime: php55
service: frontend
api_version: 1
threadsafe: true

handlers:
- url: /
  static_files: www/index.html
  upload: www/index.html

- url: /(.*)
  static_files: www/\1
  upload: www/(.*)

项目输出构建到www 文件夹。 gcloud 用于使用批处理文件中的gcloud app deploy app.yaml --quiet --version %DOC_VERSION% --project %GCP_PROJECT_ID% 命令进行部署。

我期待 gcloud 复制和部署仅位于 www 文件夹下的文件,但它开始复制位于 node_modules 文件夹下的大约 10K 文件(我终止了该过程)。

所以,我更改了app.yaml,现在它看起来像这样:

runtime: php55
service: frontend
api_version: 1
threadsafe: true
skip_files:
    - ^node_modules$
    - ^src$
    - ^assets$
    - ^\.

handlers:
- url: /
  static_files: www/index.html
  upload: www/index.html

- url: /(.*)
  static_files: www/\1
  upload: www/(.*)

并且按预期工作。

我的理解是static_files 设置被gcloud 工具用于上传相关文件。那么,为什么要从未提及的文件夹中上传文件?提到skip_files 是正确解决此行为的唯一方法吗?

【问题讨论】:

    标签: google-app-engine single-page-application gcloud google-cloud-sdk


    【解决方案1】:

    app.yaml 文件中的static_files 设置仅将目录指定为静态文件的位置,以便平台在运行时需要时找到它们。

    要指定在部署期间应该或不应该上传哪些目录和文件,在 app.yaml 中定义 skip_files 是一种选择。另一种选择是在项目的根目录(app.yaml 所在的位置)创建一个.gcloudignore 文件,您可以在其中指定不应上传到 Google Cloud Platform 的文件。它遵循与.gitignore 相同的语法。您可以在 Github 示例代码 here 中找到它的示例。请注意,您可以使用skip_files.gcloudignore 来避免冲突。

    【讨论】:

    • 请注意,.gcloudignore 方法比 skip_files 方法更严格:它仅适用于较新的 Cloud SDK 版本,不适用于特定语言的 GAE SDK。跨度>
    • 因此,将 app.yaml 复制到最终分发文件夹并从那里部署似乎会更容易。
    猜你喜欢
    • 2016-02-25
    • 1970-01-01
    • 2021-11-25
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 1970-01-01
    相关资源
    最近更新 更多