使用自定义容器部署到App Engine时构建错误

时间:2015-01-13 15:03:21

标签: node.js google-app-engine docker

我使用google / nodejs-runtime docker镜像在App Engine上使用基于nodejs的自定义部署。

我通过

在localhost上构建了我的代码
gcloud preview app run .

它运行正常。但是当我使用

将其部署到我的App Engine时
gcloud preview app deploy .

它给出了这个错误(以及整个堆栈跟踪):

Build Error: Get https://index.docker.io/v1/repositories/google/nodejs-runtime/images: dial tcp: lookup index.docker.io on 192.168.2.1:53: no answer from server.

从内部Google Repos获取存储库时,这似乎是错误的。是吗?

  • 如果是,为什么会这样,我怎样才能确保这不会发生 试。
  • 如果不是,那么它是什么以及如何解决它?

1 个答案:

答案 0 :(得分:0)

所以这是在部署到应用引擎时发生的事情:

  • Docker检查Google的图像回购,因为我正在使用的图像文件(google / nodejs-runtime)是google并托管在Google上(我猜)。
  • 检查docker镜像的任何更新并更新映像文件,这是将更新版本推送到部署所必需的。
  • 拉动更改并将图像推送到App Engine服务器并检查该应用是否正在投放。

虽然我的假设是这个问题出现在Google的终端注册表中,但事实并非如此。

因此实际上有两个问题导致了这个问题:

主要问题(正如@ John-Lowry提出的问题所述): 连接到docker服务器的错误是DNS名称解析。这是由于我的ISP的DNS问题阻止了对服务器的访问。在更改ISP时解决,并在ISP#1上解决了一段时间。

次要问题(不确定是否完全相关): 一旦我切换ISP,就会发生以下错误

google.appengine.tools.docker.containers.ImageError: Image with tag google/docker-registry was not found

一旦我从服务器更新了图像,就解决了这个问题。 Similar Question最后,更新的应用程序被推送到服务器。

我不确定错误发生的原因,但这是我评估的内容:

在部署之前的某个时刻更新了docker注册表图像(google / docker-registry)。在部署时,对正在使用的映像(google / nodejs-runtime)执行了检查,但由于nodejs-runtime依赖于docker-registry(我猜测维护各种访问策略),因此有必要更新到更新的映像

请建议修改。