为什么 gcloud sdk 的部署命令会在我的主目录中查找文件?

Why is the gcloud sdk's deploy command looking at my home directory for files?

我正在尝试将 python 服务器部署到 Google App Engine。

我正在尝试使用 gcloud sdk 来执行此操作。

看来我需要使用的命令是gcloud app deploy

我收到以下错误:

me@mymachine:~/development/some-app/backend$ gcloud app deploy
ERROR: (gcloud.app.deploy) Error Response: [3] The directory [~/.config/google-chrome/Default/Cache] has too many files (greater than 1000).

我必须将 ~/.config 添加到我的 .gcloudignore 才能克服这个错误。

它为什么要看那里?

The full repo of my project is public 但我相信我已经包含了相关部分。

  1. 我查看了您的链接存储库,没有 任何 yaml 文件。据我所知,GAE 项目需要一个 app.yaml 文件,因为该文件告诉 GAE 您的 运行time 是什么,以便 GAE 知道如何 deploy/run 您的代码。事实上,根据gcloud app deploy documentation,如果你不指定要部署的任何yaml个文件,它会默认在当前目录下app.yaml。如果在当前目录中找不到,它将尝试构建一个。

  2. 您的存储库还显示您有一个 Docker 文件。 GAE documentation for custom runtimes 说...自定义 运行 次让您在 运行 由 Docker 文件 定义的环境中构建应用程序。 . 在自定义 运行 次的 app.yaml 文件中,您将有以下条目

   runtime: custom
   env: flex
  1. 因为你没有 app.yaml 文件,而你有一个 Docker 文件,你正在其中下载和安装 Chrome,在我看来 gcloud app deploy 试图推断您的 运行 时间,这导致它在尝试将 Docker 文件推送到生产环境之前执行部分或全部内容。这就是让它查看本地机器上的配置文件直到你明确告诉它忽略它的原因。需要说明的是,我不是 100% 确定这一点,只是想看看我是否可以得出合乎逻辑的结论。

我的建议是创建一个 app.yaml 文件并指定自定义 运行 时间。或者只使用 python 运行 时间和 flex