首页 > 解决方案 > 将 Symfony 项目部署到 App Engine - 错误:文件过多

问题描述

第一次将 Symfony 项目部署到 Google App Engine,运行gcloud app deploy.

错误:

File upload done.
ERROR: (gcloud.app.deploy) INVALID_ARGUMENT: This deployment has too many files. New versions are limited to 10000 files for this app.
- '@type': type.googleapis.com/google.rpc.BadRequest
  fieldViolations:
  - description: This deployment has too many files. New versions are limited to 10000
      files for this app.
    field: version.deployment.files[...]

我怀疑问题是我的 app.yaml 文件:

runtime: php55
api_version: 1

handlers:
# tell appengine where our static assets live
- url: /public
  static_dir: public

(我想我至少错过了一些东西来告诉它不要上传供应商的东西,例如忽略)。

我应该如何更新我的 app.ymal 文件以供项目部署?

PS 项目文件夹如下所示:

在此处输入图像描述

标签: phpsymfonygoogle-app-engine

解决方案


使用gcloud app deploy--verbosity命令的选项增加部署的详细程度,您将获得所有上传文件的列表。然后使用您的选项指定您想要忽略的选项:skip_filesapp.yaml

可选的。skip_files元素指定不将应用程序目录中的哪些文件上传到 App Engine。该值可以是正则表达式,也可以是正则表达式列表。上载应用程序时,要从要上载的文件列表中忽略与任何正则表达式匹配的任何文件名。文件名是相对于项目目录的。

skip_files具有以下默认值:

skip_files:
- ^(.*/)?#.*#$
- ^(.*/)?.*~$
- ^(.*/)?.*\.py[co]$
- ^(.*/)?.*/RCS/.*$
- ^(.*/)?\..*$

注意:注意覆盖此配置的默认值。

我可能错了,但是您的项目结构图像表明您的应用程序代码位于src目录中。如果是这样,我建议将app.yaml文件移到其中 - 包含app.yaml正在部署的文件的目录被认为是应用程序/服务的顶级目录 - 它的全部内容将被上传到 GAE。在这种移动之后,您可能需要调整一些路径 - GAE 会考虑与此应用程序/服务顶级目录相关的所有应用程序/服务路径。如果您需要它们,您可以选择性地将项目目录中的一些文件/目录符号链接到src目录中,部署遵循符号链接,将它们替换为实际内容。

一些相关的帖子:


推荐阅读