Google App Engine项目根目录位置

时间:2018-08-15 03:02:05

标签: google-app-engine google-cloud-shell

为看似显而易见的问题道歉,但我认为答案可能会帮助其他人。我一辈子都找不到Google App Engine VM(Cloud Shell)内文件路径上的文档,从中可以找到要从中提供服务的静态文件。我需要从私有github存储库中获取最新的上游更改。

请注意,我在VM的其他位置导航,甚至重新启动会话也没有按照我的预期将我置于VM的默认项目根路径中。

1 个答案:

答案 0 :(得分:2)

这里有几个问题要解决:

Cloud Shell是虚拟外壳

  

Google Cloud Shell is an interactive shell environment for Google Cloud Platform.

您工作的环境是一个容器,该容器在GCP内Google拥有的项目中的VM中运行。

您可以通过检查元数据服务器(仅适用于GCP VM)来验证这一点:

curl -H 'Metadata-Flavor:Google' "http://metadata.google.internal/computeMetadata/v1/?recursive=true&alt=text"

在提供的元数据中,您将看到如何创建和配置此容器。

Cloud Shell与用户绑定在一起,因此,无论项目如何,如果使用相同的凭据访问它,您将始终访问相同的环境。但是,如果您使用其他用户进行访问,则会获得不同的环境。

您无法访问GAE标准实例

GAE是一个完全托管的环境,您将无法访问它。这样,您将无法找到正在运行的App Engine项目的根目录。

但是,通过GAE部署代码的方式,它会在编译之前使用分段存储区来收集代码。您可以通过App Engine Admin API找到您的暂存区。尽管可以更改此配置,但通常为staging.<PROJECT_ID>.appspot.com。您可以从那里获取文件。

您可以访问GAE flex应用

但是,flex中的部署会获取您的文件,并使用它们构建一个Docker容器,然后将该容器部署到VM中。

根据the docs,您可以运行以下命令直接连接到您的容器:

gcloud app instances ssh [INSTANCE-NAME] --service [SERVICE] --version [VERSION] 
docker exec -it gaeapp /bin/bash

关于您的问题

根据您在问题评论中所说的话,您的问题可能来自无数地方。从更改您要连接的外壳到重置外壳环境(删除所有文件),一千种可能的问题。

最好的考虑方式是将Cloud Shell视为运行命令的临时环境,而不是虚拟机。

了解到这一点,您可以挂载一个持久文件系统(GCS through GCSFuseCloud Filestore,...)来保存您的工作,或者只是使用Git使您的工作始终在{{3} }。

GAE Flex具有一些不错的CI集成,因此这是走Git路线的优点。