如何将docker服务克隆到一个新的(docker swarm)

时间:2018-05-19 07:16:05

标签: git docker jenkins docker-swarm portainer

我正在使用Docker Swarm和Portainer。

要测试具有不同图像的服务,我需要克隆docker swarm服务,所有主机,挂载,标签,机密等也必须在新服务中。这是一件很难做的事情,因为有些服务可能有很多环境变量,而Portainer对此并没有多大的帮助。

我需要克隆我的整个服务website_develop并在另一个Traefik主机和docker镜像中运行它。

关于

的讲故事

我的docker swarm服务基于repo的分支。

例如:网站repo具有以下服务:website_master,website_develop。

我必须能够克隆website_develop服务并使用功能/分支执行它。

开发人员A(又名D.A)正在开发网站项目中的feature / a。

开发人员B(又名D.B)正在开发网站项目中的feature / b。

D.A刚刚将他的功能合并到了不稳定的环境(website_develop),因为它已经完成了。

D.B想在汹涌的环境中测试他的特征。但他无法合并到website_develop,因为它会在没有完成的情况下合并到master并导致错误(D.B将很快合并开发到master)。

GDSC将使用基于分支机构名称的新名称克隆服务website_develop,其中包含新的docker镜像URL和新的Traefik主机。

D.B将他的功能/ a发布到存储库(git flow feature publish)。

Git存储库(gitlab,github)将触发Jenkins的更新。

Jenkins将构建Dockerfile,然后创建新服务或更新已创建的服务。

1 个答案:

答案 0 :(得分:0)

GDSC(Go Docker Service Clone)

我创建了一个完成此项目的项目。

https://github.com/herlon214/gdsc

您只需执行:

gdsc --from original_service_name --name new_service_name --image registry.gitlab.com/my/new-image --domain mycompany.org

在此处下载最新的二进制版本:https://github.com/herlon214/gdsc/releases