我正在使用 Docker Swarm 和 Portainer。
为了测试具有不同图像的服务,我需要克隆一个 docker swarm 服务,所有主机、挂载、标签、机密等也必须在新服务中。这是一件很难手动完成的事情,因为某些服务可能有很多环境变量,而 Portainer 在这方面对我帮助不大。
我需要克隆我的整个服务 website_develop 并在不同的 Traefik 主机和 docker 映像中运行它。
讲故事
我的 docker swarm 服务基于 repo 的分支。
例如:网站 repo 有以下服务:website_master、website_develop。
我必须能够克隆 website_develop 服务并使用功能/分支执行它。
开发人员 A(又名 DA)正在开发网站项目中的功能/a。
开发人员 B(又名 DB)正在网站项目中开发 feature/b。
DA 刚刚将他的功能合并到临时环境(website_develop),因为它已经完成了。
DB 想在临时环境中测试他的功能。但是他不能合并到 website_develop,因为它会在没有完成的情况下合并到 master 并导致错误(DB 将很快将 development 合并到 master)。
GDSC 将使用基于分支名称的新名称克隆服务 website_develop,并使用新的 docker 映像 URL 和新的 Traefik 主机。
DB 将他的 feature/a 发布到存储库(git flow feature publish)。
Git 存储库(gitlab、github)将通过更新触发 Jenkins。
Jenkins 将构建 Dockerfile,然后创建新服务或更新已创建的服务。