我们正在为CI使用bitbucket管道。
我想自动化CD流,以便每当有新的/现有分支推送时,说feature_abc
(规范化),使用我的ec2盒上的Docker容器部署该分支的最新代码并映射到与分支机构名称相同的子域,即feature_abc.mydomain.com
,供质量检查小组开始测试该分支机构即将进行的更改。
如何做到?
我是否必须在自动化的某个地方使用Fabric,或者docker-compose可以做到这一点?
P.S .:我是经验丰富的Python / Django开发人员,但不熟悉Docker。在网络上阅读了很多dockerfile和docker-compose.yml内容并感到困惑。
答案 0 :(得分:0)
这是绝对可能的,尽管不能仅使用Docker工具。您大概需要:
自您指定EC2以来,我已经引用了特定的AWS子产品,但是相同的基本顺序也可以在任何环境中使用(即使在步骤3和4中使用HAProxy和BIND的本地环境)。 (此外,关于此序列,真正真正意义上的唯一Docker就是包装系统和为特定容器实例指定主机端口的统一方法。)
您可能会考虑使用高级工具来管理这些事情。例如,Ansible具有start Docker containers on remote hosts,create AWS NLBs和create Route 53 records的“模块”。 Terraform可以管理云资源(但要使其状态与常规的自动重新部署保持一致可能很棘手)。
您还可以考虑使用更高级别的部署框架。例如,此部署顺序基本上就是您访问ECS上的任何内容的方式。 Kubernetes仍然是一笔较大的投资,但作为标准选项,其Service对象具有create load balancers和(带有附加项)create the DNS record for you的功能;但是同样,“推送映像并为其创建部署和服务”是在Kubernetes中部署任何内容的完全普通的方法,对于非默认分支没有特别之处。