gpt4 book ai didi

docker - 使用 gocd CI/CD 运行 docker 容器

转载 作者:行者123 更新时间:2023-12-02 19:20:15 25 4
gpt4 key购买 nike

我已经使用 gitlab 和 docker 构建了一个 CI/CD。在我的 gitlab-ci.yml 中,我只是编写命令来构建和启动容器以运行测试,仅此而已。

现在我正在寻找一种方法来用 GOCD ci/cd 服务器做同样的事情。但是gocd的官方文档是直接来kubernetees或者Docker in Docker或者Docker outside的。我不需要这个。

我有一个 GOCD 服务器和两个 GOCD 代理。

我想构建并运行一个容器并可能部署它。我找不到在 GOCD 上制作具有三个阶段的管道的简单教程:

  1. 建立形象;
  2. 运行容器并测试它;
  3. 部署。

最佳答案

最后,我能够自己让它工作,这里有以下步骤:

先决条件:

  • 必须在每个代理上安装 docker-ce 和 docker-compose
  • go 用户必须在组 docker 上
  • /var/run/docker.sock 必须在 666 模式下
  • 每个代理都必须有权访问您的 gitlab/github/repository hub,并且必须在首次连接之前添加指纹主机

在每个 gocd-agent 上手动添加指纹主机,您必须以 go 用户身份连接(或者不要忘记将正确的所有者设置为 known_hosts 文件):

  ssh-keyscan -H your.repository.com >> /var/go/.ssh/known_hosts

然后在gocd-server ui上:

  1. 创建管道

  2. 创建一个舞台

  3. 创造一个工作

  4. 创建一个或多个任务

    --> 添加一个新任务 -> 选择“更多”,你将有可能添加一个自定义命令

此时,你可以在单元格中添加“命令”

 /usr/bin/docker

或(取决于您的用例)

 /usr/local/bin/docker-compose

在参数列表中,一行一个参数

 build
.
-f
dockerfile
-t
yourrepository/tagOfYourImage

之后,不要忘记在每次运行之前和之后清理您的容器和创建的图像。您还可以在单​​元格“命令”中使用“/bin/bash”,然后使用两个参数

 -c
"/usr/bin/docker rmi $(/usr/bin/docker image ls|/usr/bin/grep server_php|/usr/bin/awk '{ print $3 }'|/usr/bin/tr '\r' ' ') --force||true"

提示:

如果您希望所有作业在每个代理上都成功,请不要忘记在“作业设置”选项卡中选择“在所有代理上运行”选项。

更新:

如果您重新启动 docker 服务或您的代理之一,它将删除/var/run/docker.sock 上的 666 权限,将用户添加到组 docker 对我没有帮助。我必须再次为这个文件设置666权限。

关于docker - 使用 gocd CI/CD 运行 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60503946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com