【问题标题】:gcloud: how to download the app via cligcloud:如何通过 cli 下载应用程序
【发布时间】:2015-09-09 19:32:47
【问题描述】:

我使用 gcloud preview app deploy 部署了一个应用。

有没有办法把它下载到其他本地机器上? 我怎样才能得到这些文件?我通过 ssh 尝试过,但没有成功(无法访问 docker 目录)

更新: 我发现了这个:

gcloud preview app modules download default --version 1 --output-dir=my_dir

但它没有加载文件

日志

Downloading module [default] to [my_dir/default]
Fetching file list from server...
|- Downloading [0] files...                                 -|

【问题讨论】:

  • gcloud preview app modules download 是旧式 AppEngine 的产物(即不使用 Docker)。它不适用于 Docker 风格的应用程序。 (我们即将推出该功能,但当 gcloud app 处于预览模式时,情况会参差不齐)。

标签: google-app-engine google-cloud-platform gcloud


【解决方案1】:

两年后我来到了 Google App Engine,我看到他们已经做了很多改进并添加了大量的功能。但遗憾的是,他们的文档有时还有很多不足之处。

我曾经使用appcfg.py使用以下命令下载我上传版本的代码。

appcfg.py download_app -A <app_id> -V <version> <output-dir>

当然,现在他们已经完成了 gcloud shell 中无法访问 appcfg.py 的所有内容。

但是,以下方法帮助我下载了部署的代码:

  1. 转到控制台并进入 Google App Engine。
  2. 选择您要使用的项目。

  3. 项目的仪表板打开后,点击右上角的 打开内置的控制台窗口。

  4. 哪个应该在底部加载云外壳,现在如果您检查 appcfg.py 可供您在此 VM 中使用。

  5. 因此,请使用appcfg.py download_app -A <app_id> -V <version> <output-dir> 下载代码。

  6. 现在,一旦您在所需文件夹中获得了代码,为了将其下载到您的本地机器上 - 您可以打开 docker 代码编辑器

  7. 现在我假设我右键单击并导出所需的 文件夹它会工作,

    但它却给了我以下错误信息。

    {"Error":"'concurrency' must be a number but it is [object Undefined]","Message":"'concurrency' must be a number but it is [object Undefined]"}
    
  8. 所以,我想如果文件夹 是一个档案。回到云壳并使用任何东西 你喜欢的实用程序制作文件夹的存档

    zip -r mycode.zip mycode
    
  9. 进入 docker 代码编辑器,导出并下载。

现在。当然,可能还有更多方法可以做到(希望如此),但这对我在 2 年后回到 Google App Engine 后才有意义。

【讨论】:

  • 在此贴发布一年后来到这里,这是唯一对我有用的方法。谢谢!
  • 我没有看到 output_dir 在任何地方创建
【解决方案2】:

恕我直言,今天(2018 年 8 月)的最佳选择是:

在主菜单下的产品下,转到Tools -> Cloud Build -> Build history

在此处,单击所需构建的 ID。

然后,在打开的窗口(构建详细信息)中,单击source 链接,开始下载压缩代码。

就这么简单。

HTH。

【讨论】:

  • 我可以跟进“clidk the ID”,但我没有在其中看到源链接。
【解决方案3】:

目前,最好的方法是从 Docker 中提取文件。

将实例置于自我管理模式,以便您可以通过 ssh 进入它:

$ gcloud preview app modules set-managed-by default --version 1 --self

查找实例的名称:

$ gcloud compute instances list | grep gae-default-1

将其从 Docker 容器中复制出来,更改权限,然后将其复制回本地机器:

$ gcloud compute ssh --zone=us-central1-f gae-default-1-1234 'sudo docker cp gaeapp:/app /tmp'
$ gcloud compute ssh --zone=us-central1-f gae-default-1-1234 "chown -R $USER /tmp/app"
$ gcloud compute copy-files --zone=us-central1-f gae-default-1-1234:/tmp/app /tmp/
$ ls /tmp/app
Dockerfile
[...]

【讨论】:

  • 感谢您的帮助扎卡里!我收到 ssh 超时 :( gcloud compute ssh --zone=us-central1-c gae-default-1-g5ol 'sudo docker cp gaeapp:/app /tmp' ssh: connect to host 104.154.73.30 port 22:操作超时错误:(gcloud.compute.ssh) [/usr/bin/ssh] exited with return code [255]。有关故障排除提示,请参阅cloud.google.com/compute/docs/troubleshooting#ssherrors
  • 如果您从 Cloud Console 尝试相同的操作(计算 > AppEngine > 实例,然后找到运行您想要的应用版本的实例的名称并点击 SSH)会发生什么?跨度>
  • 第一个命令似乎不再是有效命令。
【解决方案4】:

从 2021 年 2 月起,您可以使用 pip 安装 appengine-sdk

pip install appengine-sdk

安装后,appcfg 可用于下载应用代码。

python -m appcfg download_app -A app_id [ -V version ] out-dir

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 2017-10-08
    • 1970-01-01
    相关资源
    最近更新 更多