社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  docker

如何为CD的每个代码分支提供一个Docker容器

JV. • 5 年前 • 1706 次点击  

我们使用Bitbucket管道进行CI。

我想自动化CD流,以便每当有一个新的/现有的分支说 feature_abc (规范化)该分支的最新代码使用docker容器部署在我的ec2框上,并映射到与分支名称相同的子域,即。 feature_abc.mydomain.com 让qa团队开始测试该分支即将进行的更改。

怎么做?

我需要在自动化中使用fabric吗?或者docker compose可以做到吗?

备注:我是一个经验丰富的python/django开发人员,但对docker还不熟悉。在网上读了很多dockerfile和docker-compose.yml的东西,弄糊涂了。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/47587
 
1706 次点击  
文章 [ 1 ]  |  最新文章 5 年前
David Maze
Reply   •   1 楼
David Maze    6 年前

这是绝对可能的,虽然不是单靠Docker工具。你大概需要:

  1. 让ci系统用分支名称标记图像
  2. 让CD系统选择一个端口并在该端口上部署映像
  3. 建立一个 network load balancer 为您的服务重定向“正常”端口( 例如 ,对于http为80)到您部署到的特定端口
  4. 部署 Route 53 分支名称指向负载平衡器的DNS记录
  5. 当你注意到树枝已经消失时,撤销这些步骤

自从您指定了ec2之后,我已经引用了特定的aws子产品,但是相同的基本序列应该可以在任何环境中工作(甚至在步骤3和4中使用haproxy和bind的内部环境)。(另外,这个序列中唯一真正特定于Docker的是打包系统和为特定容器实例指定主机端口的统一方法。)

你可以考虑使用更高级的工具来管理这些事情。 Ansible 例如,将“模块”设置为 start Docker containers on remote hosts ,请 create AWS NLBs create Route 53 records 是的。 Terraform 可以管理云资源(但保持其状态与常规的自动重新部署保持一致可能很棘手)。

您还可以考虑更高级别的部署框架。这个部署序列基本上就是您访问 ECS ,例如。 Kubernetes 仍然是更大的投资,但作为标准选择,它的服务对象有能力 create load balancers ,和(带有附加组件) create the DNS record for you ;但同样,“推送映像并为其创建部署和服务”是在kubernetes中部署任何东西的完全普通的方式,而非默认分支没有什么特别之处。