为看似显而易见的问题道歉,但我认为答案可能会帮助其他人。我一辈子都找不到Google App Engine VM(Cloud Shell)内文件路径上的文档,从中可以找到要从中提供服务的静态文件。我需要从私有github存储库中获取最新的上游更改。
请注意,我在VM的其他位置导航,甚至重新启动会话也没有按照我的预期将我置于VM的默认项目根路径中。
答案 0 :(得分:2)
这里有几个问题要解决:
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是一个完全托管的环境,您将无法访问它。这样,您将无法找到正在运行的App Engine项目的根目录。
但是,通过GAE部署代码的方式,它会在编译之前使用分段存储区来收集代码。您可以通过App Engine Admin API找到您的暂存区。尽管可以更改此配置,但通常为staging.<PROJECT_ID>.appspot.com
。您可以从那里获取文件。
但是,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 GCSFuse,Cloud Filestore,...)来保存您的工作,或者只是使用Git使您的工作始终在{{3} }。
GAE Flex具有一些不错的CI集成,因此这是走Git路线的优点。