【发布时间】:2015-01-09 02:20:54
【问题描述】:
我的应用程序对私有 BitBucket 存储库有一个 Git 依赖项。
my_package:
git:
url: git@bitbucket.org:myuser/mypackage.git
当我跑步时
gcloud --verbosity debug preview app run app.yaml
我明白了
Resolving dependencies...
Git error. Command: git clone --mirror git@bitbucket.org:myuser/my_package.git /root/.pub-cache/git/cache/my_package-6fe77906161a7a9252973e29e39a4149b75f9a7e
error: cannot run ssh: No such file or directory
fatal: unable to fork
我想在Dockerfile 中添加ADD 指令将是一个可行的解决方法。
当然,需要将 repo 检出到本地目录才能完成这项工作。
我试过了:
FROM google/dart-runtime
ADD ../my_package ../my_package
https://docs.docker.com/reference/builder/#add 说
The <src> path must be inside the context of the build; you cannot ADD
../something /something, because the first step of a docker build is to
send the context directory (and subdirectories) to the docker daemon.
看来我必须将..my_package 目录移动到my_app 目录中。这不漂亮:-(
当我向 Dockerfile 添加虚假行时,run 失败,但如果我添加 ADD ... 指令,它似乎完全被忽略了。
【问题讨论】:
-
error: cannot run ssh: No such file or directory 看来是 ssh 出了点问题?
-
这是仅私人仓库或任何使用 SSH 的仓库的问题吗?
-
我认为它只适用于私人回购。目前,我尝试使用已安装的 ssh-client 和 SSH 部署密钥从头开始创建 Docker 映像,但我还没有。将文件放入不在包含
Dockerfile的目录中的 Docker 映像似乎非常困难。 -
您不能使用其他使用 http 协议的 URL 吗?否则,我认为您必须指示 Docker 安装 ssh,并且可能像您尝试做的那样提供 ssh 密钥。
-
我想我成功了。明天我会验证并添加答案。
标签: google-app-engine dart dart-pub