Tag: 连续部署

如何设置从docker-hub到AWS ECS的连续部署?

我正在为我的微服务build立CI / CDpipe道。 目前,我使用TravisCI在办理登机手续时从Github提取代码,构buildDocker镜像并将其推送到DockerHub。 我尝试使用docker cloud(以前称为Tutum),它向AWS EC2实例提供自动部署function,但部署有时会重新创build容器和服务端点URL更改,这是不可取的。 我正在探索亚马逊的ECS及其任务,但是我无法find任何有关如何在将新映像推送到泊坞窗时设置连续部署到ECS的参考。 任何人有任何经验的设置?

Docker每次构build/推送 – 对于持续部署是否可行?

如果每天部署5-10次,是否每次部署时都要彻底重build并推送一个Docker镜像真的很实用? 我承认CircleCI的持续集成和交付与Docker中提到的好处,即: 请注意,Elastic Beanstalk还允许您部署Dockerfile和相关的源代码,而不是构build映像,但在CircleCI上预先构build映像并在其上运行某种forms的validation后,您的部署将更具确定性,因为您可以删除构build环境作为testing和生产之间的variables。 但是,一旦所有的依赖关系和源代码都包含在内,我们完全构build的webapp映像将接近1GB。 我只是不知道如何实际部署高达200GB /月(即每天10次提交,持续部署),实际上99%不会在构build之间发生变化。 也就是说,它可能只是1K的HTML,JS或CSS被改变来添加一个function。 我更喜欢一种方法,其中docker镜像包含很less更改的软件,其余部分作为捆绑包的一部分进行压缩。 这仍然会导致一个自包含的部署文件(不需要进一步的依赖关系,需要下载),但大大减less构build时间和带宽。

使用docker进行持续交付的集成testing

我目前正在开发一个产品,公开一个REST API,最终将托pipe在云端。 我的技术堆栈是在maven之上的spring(启动,mvc,数据,testing等)。 我有集成testing来testing从我的API连接到testing数据库。 为了更好地testing我的产品在相同的环境下运行的生产,我想用一个容器来执行我的集成testing。 我的目标是遵循这个持续交付工作stream程: 编 运行unit testing 构build应用程序(jar)并将其部署到中央存储库 使用这个档案创build一个docker容器 启动容器(使用弹簧启动) 对正在运行的容器运行集成testing 运行性能testing 如果一切正常,请将此容器部署到中央存储库 部署这个相同的容器来刺激(只使用不同的命令行参数)。 这种方法的优点是具有相同的容器forms集成testing阶段到生产,这似乎是理想的,不是吗? 不过,我不知道如何使用我的源代码包中的spring mvctesting。 我怎么能用mockmvc做这样的事情? 它如何足够灵活地在开发中运行集成testing呢? 有没有人尝试过这种方法? 我在这里想念什么? 提前致谢

jenkinsCDpipe道Kubernetes

我打算有一个与Jenkins的CDpipe道,接受我的应用程序,发布docker图像到我的私人docker存储库。 我想我知道该怎么做。 我不确定Kubernetes的部分。 我想要把这个镜像部署到我的私有Kubernetes集群(目前是1 Master&1 Slave)。 问题:安装kubectl和docker的Jenkins Slave是否需要成为Kubernetes集群的一部分才能触发部署? 我怎样才能触发这个部署?

Docker组合连续部署设置

我正在寻找一种方法来部署docker-compose图像和/或构build到远程服务器,具体但不限于DigitalOcean VPS。 docker docker-compose目前正在使用CircleCI持续集成服务,它将自动validationtesting通过。 但是,它应该自动部署成功 。 我docker-compose.yml看起来像这样: version: '2' services: web: image: name/repo:latest ports: – "3000:3000" volumes: – /app/node_modules – .:/app depends_on: – mongo – redis mongo: image: mongo command: –smallfiles volumes: – ./data/mongodb:/data/db redis: image: redis volumes: – ./data/redis:/data docker-compose.override.yml : version: '2' services: web: build: . circle.yml相关部分: deployment: latest: branch: master commands: – […]

使用Ansible进行持续部署和AWS自动扩展(+ Docker?)

我的组织的网站是一个运行在AWS前端Web服务器+一些后台处理服务器上的Django应用程序。 我们目前正在使用Ansible: 系统configuration(从裸露的OS映像) 频繁的手动触发代码部署。 相同的Ansible操作手册能够从头开始configuration本地Vagrant dev VM或生产EC2实例。 我们现在要在EC2中实现自动缩放,这就需要一些“把服务器当作牛,而不是宠物”的理念。 第一个先决条件是从一个静态pipe理的Ansible库存移动到一个dynamic的,基于EC2 API的库。 接下来的一个大问题是如何在这个新的世界里,在一夜暴富的情况下来回摆动。 我能想到的选项是: 为每个部署创build一个新的完全部署的AMI ,创build一个新的AS启动configuration并用此更新AS组。 听起来非常非常繁琐,但也是非常可靠的,因为清洁的石板方法,并将确保任何系统更改代码所需的将在这里。 而且,在实例启动时不需要额外的步骤,所以启动和运行更快。 使用不经常更改的基本AMI ,在启动时自动从git获取最新的应用程序代码,启动web服务器。 一旦启动,只需按照需要手动部署,就像以前一样。 但是如果新代码依赖于系统configuration(新包,权限等)的更改呢? 看起来你必须开始考虑代码版本和系统/ AMI版本之间的依赖关系,而“只是做一个完全可靠的运行”的方法更集成,更可靠。 这不仅仅是在实践中潜在的头痛吗? 使用Docker? 我有一个强大的预感,它可以是有用的,但我不知道它是如何适合我们的图片。 我们是一个相对独立的Django前端应用程序,只有RabbitMQ + memcache作为服务,我们永远不会在同一个主机上运行。 那么使用包含系统包+最新代码的Ansible构buildDocker镜像有什么好处,而不是让Ansible直接在EC2实例上执行? 你怎么做呢 ? 任何见解/最佳实践? 谢谢 !

Docker和Ansible如何配合实现Continuos Delivery / Continuous Deployment

我不熟悉configurationpipe理和部署工具。 我必须实施一个持续交付/持续部署工具,用于我曾经投入的最有趣的项目之一。 首先,我个人对AWS感到满意,我知道Ansible是什么,它背后的逻辑和目的。 我对Docker没有同样的理解,但是我明白了。 我经历了很多互联网资源,但是我无法得到大局。 我一直在挣扎的是他们如何融合在一起。 使用Ansible ,我可以将我的基础架构作为代码来pipe理; 构buildEC2实例,安装软件包…我甚至可以通过拉取代码,修改configuration文件和启动Web服务器来部署完整的应用程序。 Docker本身就是一个打包应用程序的工具,并确保它可以在你部署的任何地方运行。 我的问题是: Docker(或Ansible和Docker)如何扩展持续集成过程! 假设我们有一个源代码库,团队成员完成了一个function的工作,他们推动他们的工作。 jenkins检测到这一点,运行所有的验收/单元/集成testing套件,如果他们都通过了,它宣称它是一个稳定的构build。 Docker如何适应这里? 我的意思是,当团队推动他们的工作时,Jenkins是否必须拉取应用程序中编码的Docker文件源,构build应用程序的图像,启动容器并运行所有testing,或者运行经典testing一切都很好,那么它会从Docker文件构buildDocker镜像并将其保存在一个私有的地方? jenkins应该使用xyz标记最终的图像! Docker容器configuration: 假设我们有Jenkins构build的映像存储在某个地方,如何处理将相同的映像部署到不同的环境中,甚至是不同的configuration参数(Vhostsconfiguration,数据库主机,队列URL,S3端点等等)什么是最灵活的方式来处理这个问题而不破坏Docker原则? 这些configuration是否在构build时或者基于它的容器开始时支持在映像中,如果是的话,它们是如何被注入的? Ansible和Docker : Ansible提供了一个Docker模块来pipe理Docker容器。 假设我解决了上面提到的问题,当我想部署我的应用程序的新版本xtz时,我告诉Ansible将它从存储的位置拉出来,启动应用程序容器,那么如何注入configuration设置? Ansible在运行之前是否需要loginDocker镜像(这听起来令人费解),并且使用Jinja2模板和经典主机一样! 如果没有,这是如何处理?! 对不起,如果这是一个很长的问题,或者我拼错了一些东西,但这是我的想法。 我在过去的两周被封锁了,我无法弄清楚正确的工作stream程。 我希望这是未来读者的参考。 请阅读您的经验和解决scheme非常有帮助,因为这看起来像一个常见的工作stream程。 先谢谢你。 任何帮助深表感谢。

Jenkins – Docker集成

我正在寻找将Docker集成到Jenkins中以执行构build/testing命令的最佳方法。 我发现的最好的来源是这篇博文: http : //blog.howareyou.com/post/62157486858/continuous-delivery-with-docker-and-jenkins-part-i 它基本上提供了所有的执行命令与“docker运行”。 我希望看到更好的与Jenkins插件的集成,但我在这个领域找不到任何东西。 任何人都可以提出一个好的方法来进行? 有没有什么项目可以解决这个问题? 谢谢

Docker映像版本用于持续集成/持续部署

我们正在实施持续集成和持续交付stream程,并使用两个众所周知的概念:Linux二进制包和Docker镜像。 大部分的工作已经完成了:我们从GitLab Aptly获取代码,编译它并把它放到Aptly存储的deb包中,然后我们为每个服务创buildDocker镜像,并将镜像推送到私有Docker Registry服务器。 之后,这些图像将滚动到testing环境。 最后我们启动服务并进行验收testing。 这是一个连续的过程,每次有人向提交origin/master推送提交时都会启动。 还有什么不清楚的是如何区分存储在Docker Registry中的稳定图像 ? 我们必须跟踪每个图像的状态,因为我们需要执行稳定服务器的定期更新。 很明显,某些版本(即图像版本)不能通过验收testing,必须标记为不可用,并在每次连续发送的迭代中将其过滤掉。 似乎没有这个function的默认实现: 默认的图像repo/tag是一个普通的普通string,不能同时拥有版本号,build立date和质量保证标志。 Labels ( 1.6中介绍)可能是解决scheme的一个很好的起点,但我们无法find重新标记现有图像的机会(请注意,我们需要考虑QA的结果更新图像“元数据”) 。 没有可用的标签值查询图像的方法,但我们可能会包装Docker API。 那么将版本分配给Docker镜像的正确方法是什么? QA相关信息如何存储? 我们如何“突出”稳定的形象构build? Jenkins CI特点可以用来达到这些目的吗? 请分享你的经验。 UPD:过了一段时间,我不得不在Docker问题跟踪器中开始讨论 。 也许有人会觉得它有用。

如何在公共registry中创build一个基于git标签的Docker镜像?

我正在构build一个使用Docker的持续部署策略。 我的代码托pipe在Github上,当我推入git时,Dockerregistry开始自动生成。 默认设置是当我推到主人时开始build立,并用“最新”标签创build一个图像。 这很好,但我也希望能够在git中标记提交并基于此创build一个图像。 在Dockerregistry网站上似乎有一些function,在Edit Automated Build设置页面上,我可以为typesselect“标记”,并提供静态标记名称。 如何让Docker标签名称与Git标签名称相同? 目标是能够标记特定的版本,所以有一个版本的历史。