为看似显而易见的问题道歉,但我认为答案可能对其他人有所帮助。我终生无法在 Google App Engine VM (Cloud Shell) 中的文件路径上找到文档,我可以在其中找到提供的静态文件。我需要从私人 github 存储库中提取最新的上游更改。
请注意,我在 VM 中的其他位置导航,甚至重新启动会话并没有像我预期的那样将我置于 VM 内的默认项目根路径中。
为看似显而易见的问题道歉,但我认为答案可能对其他人有所帮助。我终生无法在 Google App Engine VM (Cloud Shell) 中的文件路径上找到文档,我可以在其中找到提供的静态文件。我需要从私人 github 存储库中提取最新的上游更改。
请注意,我在 VM 中的其他位置导航,甚至重新启动会话并没有像我预期的那样将我置于 VM 内的默认项目根路径中。
这里有几个问题需要解决:
您工作的环境是在 GCP 内 Google 拥有的项目中的 VM 中运行的容器。
您可以通过检查元数据服务器来验证这一点(仅适用于 GCP 虚拟机):
curl -H 'Metadata-Flavor:Google' "http://metadata.google.internal/computeMetadata/v1/?recursive=true&alt=text"
在提供的元数据中,您将看到如何创建和配置此容器。
Cloud Shell 与用户绑定,因此无论项目如何,如果您使用相同的凭据访问它,您将始终访问相同的环境。但是,如果您使用不同的用户访问,您将获得不同的环境。
GAE 是一个完全托管的环境,您将无法访问它。这样,您将无法找到正在运行的应用引擎项目的根目录。
但是,GAE 部署代码的方式是,它使用暂存桶在编译之前收集代码。您可以通过App Engine Admin API找到您的暂存存储桶。这通常是staging.<PROJECT_ID>.appspot.com
,尽管您可以更改此配置。您可以从那里获取您的文件。
但是,flex 中的部署会获取您的文件,使用它们构建一个 Docker 容器,然后将该容器部署到 VM 中。
根据文档,您可以通过运行直接连接到您的容器:
gcloud app instances ssh [INSTANCE-NAME] --service [SERVICE] --version [VERSION]
docker exec -it gaeapp /bin/bash
根据您在问题评论中所说的,您的问题可能来自无数地方。从更改您要连接的 shell,到重置您的 shell 环境(删除所有文件),再到一千种不同的可能问题。
考虑它的最佳方式是将 Cloud Shell 视为运行命令的临时环境,而不是虚拟机。
知道这一点后,您可以挂载一个持久文件系统(通过 GCSFuse、Cloud Filestore等 GCS)来持久化您的工作,或者简单地使用 Git 让您的工作始终在repo上同步。
GAE Flex 有一些不错的 CI 集成,所以这是走 Git 路线的一个加分项。