Google App Engine 项目根位置
Google App Engine Project Root Location
对于这个看似显而易见的问题深表歉意,但我认为答案可能会对其他人有所帮助。我一辈子都找不到有关 Google App Engine VM(云 Shell)文件路径的文档,我可以在其中找到提供的静态文件。我需要从私有 github 存储库中提取最新的上游更改。
请注意,我在 VM 中的其他位置导航,甚至重新启动会话也没有像我预期的那样将我置于 VM 中的默认项目根路径中。
这里有几个问题需要解决:
云Shell是一个虚拟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"
在提供的元数据中,您将看到如何创建和配置此容器。
云 Shell 与用户绑定,因此无论项目如何,如果您使用相同的凭据访问它,您将始终访问相同的环境。但是,如果您使用不同的用户访问,您将获得不同的环境。
您无法访问 GAE 标准实例
GAE 是一个完全托管的环境,您将无法访问它。这样,您将无法找到 运行ning 应用引擎项目的根。
但是,按照 GAE 部署代码的方式,它使用暂存桶在编译之前收集代码。您可以通过 App Engine Admin API 找到您的暂存桶。这通常是 staging.<PROJECT_ID>.appspot.com
,尽管您可以更改此配置。您可以从那里获取文件。
您可以访问 GAE flex 应用程序
但是,flex 中的部署会获取您的文件,用它们构建一个 Docker 容器,然后将此容器部署到 VM 中。
根据 the docs,您可以通过 运行ning 直接连接到您的容器:
gcloud app instances ssh [INSTANCE-NAME] --service [SERVICE] --version [VERSION]
docker exec -it gaeapp /bin/bash
关于您的问题
根据您在问题评论中所说的,您的问题可能来自很多地方。从更改您正在连接的 shell,到重置您的 shell 环境(删除所有文件),再到一千种不同的可能问题。
最好的思考方式是将云 Shell 视为 运行 命令的临时环境,而不是虚拟机。
知道了这一点,您就可以挂载持久文件系统 (GCS through GCSFuse, Cloud Filestore, ...) to persist your work, or simply use Git to have your work always synced on a repo.
GAE Flex 有一些很好的 CI 集成,所以这是走 Git 路线的优势。
对于这个看似显而易见的问题深表歉意,但我认为答案可能会对其他人有所帮助。我一辈子都找不到有关 Google App Engine VM(云 Shell)文件路径的文档,我可以在其中找到提供的静态文件。我需要从私有 github 存储库中提取最新的上游更改。
请注意,我在 VM 中的其他位置导航,甚至重新启动会话也没有像我预期的那样将我置于 VM 中的默认项目根路径中。
这里有几个问题需要解决:
云Shell是一个虚拟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"
在提供的元数据中,您将看到如何创建和配置此容器。
云 Shell 与用户绑定,因此无论项目如何,如果您使用相同的凭据访问它,您将始终访问相同的环境。但是,如果您使用不同的用户访问,您将获得不同的环境。
您无法访问 GAE 标准实例
GAE 是一个完全托管的环境,您将无法访问它。这样,您将无法找到 运行ning 应用引擎项目的根。
但是,按照 GAE 部署代码的方式,它使用暂存桶在编译之前收集代码。您可以通过 App Engine Admin API 找到您的暂存桶。这通常是 staging.<PROJECT_ID>.appspot.com
,尽管您可以更改此配置。您可以从那里获取文件。
您可以访问 GAE flex 应用程序
但是,flex 中的部署会获取您的文件,用它们构建一个 Docker 容器,然后将此容器部署到 VM 中。
根据 the docs,您可以通过 运行ning 直接连接到您的容器:
gcloud app instances ssh [INSTANCE-NAME] --service [SERVICE] --version [VERSION]
docker exec -it gaeapp /bin/bash
关于您的问题
根据您在问题评论中所说的,您的问题可能来自很多地方。从更改您正在连接的 shell,到重置您的 shell 环境(删除所有文件),再到一千种不同的可能问题。
最好的思考方式是将云 Shell 视为 运行 命令的临时环境,而不是虚拟机。
知道了这一点,您就可以挂载持久文件系统 (GCS through GCSFuse, Cloud Filestore, ...) to persist your work, or simply use Git to have your work always synced on a repo.
GAE Flex 有一些很好的 CI 集成,所以这是走 Git 路线的优势。