当我尝试通过gcloud部署我的GAE应用时,我收到了以下错误。
Updating service [default]...failed.
ERROR: (gcloud.app.deploy) Error Response: [400] This deployment has too many files. New versions are limited to 10000 files for this app.
Details: [
[
{
"@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[...]"
}
]
}
]
]
有没有办法解决这个问题?
答案 0 :(得分:6)
如果您在尝试部署的服务中确实拥有超过10000个文件的配额,则可能必须相应地减少该数量。
其他尝试:
.gcloudignore
file。假设您实际上没有达到文件配额,那么错误通常表示您在app目录中有循环/循环引用符号链接。这也可以解释一条路径,就像你在这篇文章的评论中提到的那样:https://stackoverflow.com/a/42425048/4495081。你只需要修复有问题的符号链接。同样,简单/一致的目录结构可以帮助防止此类问题。
答案 1 :(得分:5)
gcloud app deploy
写入一个日志文件,并告诉您该日志在其输出中的早期位置。检查日志。它会告诉你正在上传的内容。
我看到人们遇到麻烦的两种常见方式是
venv
(或.venv
,如果这是您选择的名称)添加到skip_files
。.git
添加到skip_files
答案 2 :(得分:1)
也许您需要忽略.gcloudignore文件中的某些文件
/vendor/
/node_modules/
/.git/
这对我有用!
答案 3 :(得分:0)
对于python runtime 3.7,通过将这些文件添加到.gcloudingore中而不是在app.yaml中的skip_files中来解决此错误
答案 4 :(得分:0)
通过将google cloud sdk文件夹添加到项目根文件夹中的.gcloudignore,我能够减少上传的文件。
答案 5 :(得分:0)
几件事:
static
文件夹可能会有些混乱。尝试删除它并重新运行python manage.py collectstatic
,这对我来说减少了大约2000个文件。.gcloudignore
文件忽略了assets
文件夹,因为它们已被移至static
。答案 6 :(得分:0)
如某些评论中所述, virtualenv 文件夹可以包含很多文件。
我刚刚将venv/
作为新行添加到.gcloudignore
文件中。
答案 7 :(得分:0)
我向 Google Cloud 支持人员提出请求,这是他们对此问题的官方回应:
<块引用>感谢您联系 Google Cloud 支持。我明白你是 由于达到了 10,000 个文件的限制,因此无法部署您的应用 按照错误消息中的指示上传,如果我知道,请告诉我 误会了。
GAE 无法执行超过 10,000 个文件的部署。请
运行以下命令以查看正在部署的文件数:
find . -type f | wc -l
。如果你看到数字在上面
10,000;确保防止不必要的文件被部署
使用 app.yaml
选项 skip_files
[1]。此元素可帮助您
指明不应上传哪些文件 [1]。
如果错误仍然存在,还有另外两种方法可以解决此问题:
如果您使用的文件是静态内容,请使用 Cloud Storage 存储分区来存储您的文件。您可以将它们存储在 GCS 存储桶中 并通过 App Engine [2] 为它们提供服务。创建应用程序时,应用程序 引擎创建一个默认存储桶。要使用它,您必须列出 项目 [3] 中的存储桶,然后将 Cloud Storage 声明为 通过将其添加到应用程序的依赖文件 [4]。这会 允许您从存储桶上传或下载数据 [5][6]。请 考虑使用此替代方法可能会影响您的每月开支。
通过提交配额增加来增加上传文件的数量。为此,我需要以下信息 将提交给产品团队,以便他们可以对其进行审核并做出 关于它的决定:增加配额的商业理由 新的期望限制。