首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在码头(DinD) CloudBuild上设置码头?

如何在码头(DinD) CloudBuild上设置码头?
EN

Stack Overflow用户
提问于 2022-11-03 15:31:52
回答 2查看 56关注 0票数 0

我试图运行一个脚本(最统一的),使用对接在幕后的CI。该脚本在droneci上按预期工作,但切换到CloudBuild,尚不清楚如何设置DinD。

对于droneci,我基本上使用了DinD,如这里所示,我的问题是,如何将代码转换为Google。有可能吗?

我在互联网上搜索CloudBuild wrt DinD的语法,却找不到任何东西。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-14 12:28:17

我想出了一种在CloudBuild中运行Docker(CloudBuild)的方法。要做到这一点,我们需要启动一个服务在后台与坞-撰写。您的docker-compose.yml脚本应该如下所示。

代码语言:javascript
复制
version: '3'
services:
  dind-service:
    image: docker:<dnd-version>-dind
    privileged: true
    ports:
      - "127.0.0.1:2375:2375"
      - "127.0.0.1:2376:2376"
networks:
  default:
    external:
      name: cloudbuild

在我的例子中,我没有问题使用18.03或18.09版本,以后的版本也应该有效。其次,将容器附加到云构建网络是很重要的。这样,dind容器将与在您的步骤中生成的每个容器位于同一个网络上。

要启动服务,需要向cloudbuild.yml文件添加一个步骤。

代码语言:javascript
复制
- id: start-dind
  name: docker/compose
  args: ['-f', 'docker-compose.yml', 'up', '-d', 'dind-service']

要验证dind服务是否正常工作,只需创建ping步骤即可。

代码语言:javascript
复制
- id: 'Check service is listening'
  name: gcr.io/cloud-builders/curl
  args: ["dind-service:2375"]
  waitFor: [start-dind]

现在,如果它有效,您可以在后台使用dind正常运行脚本。重要的是传递DOCKER_HOST env变量,以便码头客户端能够找到对接引擎。

代码语言:javascript
复制
 - id: my-script
   name: my-image
   script: myscript
   env:
     - 'DOCKER_HOST=tcp://dind-service:2375'

请注意,脚本生成的任何容器都将位于dind服务中,因此,如果要对其执行任何请求,则不应该对http://localhost执行请求,而应该对http://dind-service执行请求。此外,如果要使用私有映像,则在运行脚本之前需要某种类型的身份验证。为此,您应该在运行脚本之前运行gcloud auth configure-docker --quiet。确保您的码头映像已经安装了gcloud。这将创建运行应用程序所需的身份验证凭据。凭据保存在与$HOME变量相关的路径中,因此确保应用程序能够访问它。例如,如果你使用毒理,你可能会有一些问题。

票数 0
EN

Stack Overflow用户

发布于 2022-11-10 13:27:55

云构建允许您从源代码中创建Docker容器映像。云SDK提供了易于使用此服务的container build子命令。

例如,下面是构建Docker映像的简单命令:

gcloud builds submit -t gcr.io/my-project/my-image

此命令将当前目录中的文件发送到Google,然后在一个Cloud上获取源代码,运行Docker,默认情况下将映像上传到集装箱登记处,Cloud运行用于构建映像的docker命令。您还可以通过自定义生成steps.If来自定义生成管道--您可以使用任意的Docker映像作为构建步骤,并且源代码是可用的,然后可以作为构建步骤运行单元测试。通过这样做,您总是使用相同的Docker映像运行测试。在云构建-测试运行-示例有一个演示存储库。本教程使用演示存储库作为其说明的一部分。

我还建议您查看具有类似用例的这些信息丰富的链接:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74305636

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档