git

Git + Docker 多环境自动化部署

日常项目开发过程中,一般都有多套环境,比如开发、测试和生产。各个环境部署的代码版本不一致,手动一个个来部署效率低且容易出错。如果项目采用了敏捷开发方式,可能每天需要部署几十次。手动方式更加不可行,因此必须要把多环境的部署工作自动化。本文将介绍在笔者参与项目中实际推行的一种方案,供大家参考。 整体方案 当开发人员 push 代码到 develop、release 和 master 分支时将自动触发构建 Docker 镜像,然后部署到分支对应的开发环境。 Git 分支模型 每套环境部署的代码版本都不一样,还在开发中的功能只能部署到开发环境,已经开发完成的功能可以部署到测试环境,测试通过的功能才能部署到生产环境。依托于 Git 强大的分支功能,

  • 天火
    天火
8 min read
docker

Go + Docker API服务开发和部署 - 部署篇

本文是 Go + Docker API服务开发和部署 文章系列的“部署篇”,主要讲解如何使用Docker来搭建开发和测试环境,以及部署应用到生产环境。 Docker简介 使用Docker来打包应用镜像 使用Docker Compose来部署应用及其依赖服务 使用Docker Machine来管理容器主机 使用Docker来管理测试环境 Docker简介 相信很多开发和测试人员都遇到过搭建环境的问题。新的开发人员加入团队需要花费一两天甚至更长时间来搭建一套完整的开发环境。测试人员搭建测试环境同样如此,并且如果想再多搭一套来做压力测试,又得重复一次,非常的枯燥和无趣。有没有可能使用一个标准的环境搭建脚本就能把应用及其依赖服务都Run起来?如果使用传统的脚本编写方式,很困难。每个人的工作环境千差万别,比如有的用Windows有的用Mac,脚本很难做到一次编写到处运行。并且编写脚本的人需要知晓所有应用和服务的部署细节,工作量很大。如果只有一台服务器,还要想法应对多套环境的端口、路径等系统资源冲突的问题。

  • 天火
    天火
12 min read
go

Go + Docker API服务开发和部署 - 开篇

为什么选择Go + Docker 笔者之前的项目开发主要使用Python。Python的优势在于简洁强大的语法,丰富的库包,以及极高的开发效率,而劣势在于通过解释器执行使得性能不够理想,缺少类型检查导致代码质量难以保证,全局锁的存在限制了并发性能,此外缺乏对并发编程的良好支持。这些劣势正好是Go的优势。虽然在开发效率上Go跟Python还有差距,但相比于其它静态类型语言,Go已经有很大提升了。 此外,笔者之前的项目部署主要使用virtualenv(Python 2)和pyvenv(Python 3)来创建独立的应用环境,Supervisor来管理应用进程,Fabric来编写自动化发布脚本。部署应用一键完成,已经能较好满足大多数项目的部署需求。不过不太满意的是,每次新增服务器都要重复进行配置系统,安装软件,优化系统参数等工作,如果要迁移到其它机房或云服务则会更麻烦。问题的根源在于,这种部署方式仅仅把应用依赖的语言库包跟应用一起打了包,

  • 天火
    天火
3 min read