如何将 docker 服务克隆到一个新服务中(docker 群)
How to clone docker service into a new one (docker swarm)
我正在使用 Docker Swarm 和 Portainer。
为了用不同的图像测试服务,我需要克隆一个 docker 群服务,所有的主机、装载、标签、机密等也必须在新服务中。这是一件很难手工完成的事情,因为某些服务可能有很多环境变量,而 Portainer 在这方面帮不了我太多。
我需要在不同的 Traefik 主机和 docker 镜像中克隆我的整个服务 website_develop 和 运行。
讲故事
我的 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很快就会合并develop到master)。
GDSC 将使用新的 docker 图像 URL 和新的 Traefik 主机,根据分支名称克隆服务 website_develop。
D.B 将他的 feature/a 发布到存储库(git 流功能发布)。
Git 存储库(gitlab,github)将触发 Jenkins 进行更新。
Jenkins 将构建 Docker 文件,然后创建新服务或更新已创建的服务。
GDSC(转到 Docker 服务克隆)
我创建了一个项目来执行此操作。
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
我正在使用 Docker Swarm 和 Portainer。
为了用不同的图像测试服务,我需要克隆一个 docker 群服务,所有的主机、装载、标签、机密等也必须在新服务中。这是一件很难手工完成的事情,因为某些服务可能有很多环境变量,而 Portainer 在这方面帮不了我太多。
我需要在不同的 Traefik 主机和 docker 镜像中克隆我的整个服务 website_develop 和 运行。
讲故事
我的 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很快就会合并develop到master)。
GDSC 将使用新的 docker 图像 URL 和新的 Traefik 主机,根据分支名称克隆服务 website_develop。
D.B 将他的 feature/a 发布到存储库(git 流功能发布)。
Git 存储库(gitlab,github)将触发 Jenkins 进行更新。
Jenkins 将构建 Docker 文件,然后创建新服务或更新已创建的服务。
GDSC(转到 Docker 服务克隆)
我创建了一个项目来执行此操作。
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