将Symfony项目部署到App Engine-错误:文件过多

时间:2018-08-21 05:53:14

标签: php symfony google-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 Project文件夹如下所示:

enter image description here

3 个答案:

答案 0 :(得分:2)

我认为您的 app.yaml 没什么问题,对我来说很好。

我认为您最有可能达到部署配额[1]

  

开发人员上载应用程序的次数。当前的配额为每天10,000。   一个应用程序每个版本最多只能上传10,000个文件。每个文件的最大大小限制为32 MB。

我会尝试使用不同的服务[2],而不是仅使用一项巨大服务。另一个想法是将一些文件保存在Google Cloud Storage [3]中,并使用客户端库[4]访问它们。

答案 1 :(得分:1)

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

  

可选。 skip_files 元素可指定   应用程序目录不得上传到App Engine。价值   是正则表达式或正则表达式列表。任何   匹配任何正则表达式的文件名将从   上传应用程序时要上传的文件列表。   文件名是相对于项目目录的。

     

skip_files 具有以下默认值:

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

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

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

一些相关帖子:

答案 2 :(得分:0)

我以前遇到过这个问题。我意识到我的python虚拟环境位于/ env主目录下,因此将其添加到我的app.yaml中。

skip_files:
 - env/