第一次将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文件夹如下所示:
答案 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/