不开启生产调试如何获取App Engine灵活环境应用源码
App Engine 灵活环境部署应用的源码获取方案
不需要开启生产实例调试模式,也不需要SSH登录生产实例,你完全可以通过部署时上传的容器镜像直接拿到实例内的所有文件,全程不会触碰线上运行的服务:
- 核心逻辑:App Engine 灵活环境的部署本质是拉取你推送到gcr.io的Docker镜像启动运行实例,实例内的所有文件和镜像内的文件完全一致,直接操作镜像即可导出全部内容,无任何线上风险。
- 具体操作步骤(本地操作即可):
- 先获取目标部署版本对应的镜像地址,本地执行如下命令替换对应参数查询:
命令返回结果里的gcloud app versions describe <你的版本ID> --service=<对应的服务名>containerImage字段就是完整的gcr.io镜像地址 - 本地拉取对应镜像:
docker pull <上一步查到的完整gcr.io镜像地址> - 创建临时容器导出镜像完整文件系统:
docker create --name temp-gae-file-extract <镜像地址> docker export temp-gae-file-extract -o gae-app-all-files.tar - 解压导出的
gae-app-all-files.tar包,就能浏览、提取所有部署到实例内的文件,包括你的Python应用源码。操作完成后可以执行docker rm temp-gae-file-extract清理本地临时容器。
- 先获取目标部署版本对应的镜像地址,本地执行如下命令替换对应参数查询:
注意:不建议尝试直接读取运行中生产实例的文件列表并下载,默认配置下外部没有权限直接访问运行中实例的文件系统,且操作运行中实例存在干扰线上服务的风险,镜像导出方案是最安全可靠的选择。
内容的提问来源于stack exchange,提问作者Dan Cogswell
相关产品推荐
相关产品推荐

