Google App Engine项目根目录位置

Bri*_*ian -1 google-app-engine google-cloud-shell

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

请注意,我在VM的其他位置导航,甚至重新启动会话也没有使我进入VM内的默认项目根路径,正如我期望的那样。

Jof*_*fre 5

这里有几个问题要解决:

Cloud Shell是虚拟外壳

Google Cloud Shell是用于Google Cloud Platform的交互式Shell环境。

您正在使用的环境是在GCP内Google拥有的项目中的VM中运行的容器。

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

curl -H 'Metadata-Flavor:Google' "http://metadata.google.internal/computeMetadata/v1/?recursive=true&alt=text"
Run Code Online (Sandbox Code Playgroud)

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

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

您无法访问GAE标准实例

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

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

您可以访问GAE flex应用

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

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

gcloud app instances ssh [INSTANCE-NAME] --service [SERVICE] --version [VERSION] 
docker exec -it gaeapp /bin/bash
Run Code Online (Sandbox Code Playgroud)

关于你的问题

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

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

知道了,你可以安装一个持久的文件系统(GCS通过GCSFuse云文件存储,...),以保存工作,或者干脆使用GIT中有你的工作总是同步上回购

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