需要为一个新项目设置基础设施。之前我使用过独立的Puppet和Jenkins,但现在我考虑整合Docker构建,以便可以将已经构建好的Docker镜像从开发到测试再到生产中推送,而无需触发构建。
应用程序:
- Java Web应用程序,具有由PostgreSQL、Neo4j、Elasticsearch支持的REST API
- 通过REST API与Java通信的Angular编写的客户端应用程序
- 代码存储在Git存储库中
环境:
- 开发服务器(构建、开发+测试环境)- 32GB Linux机器
- 测试服务器(AWS)
- 生产环境(AWS)
设置:
所以基本上我想的是这样的:
- 独立的Docker镜像用于Java +客户端应用程序、PostgreSQL、Elasticsearch、Neo4j,它们相互通信并通过Docker卷或使用Docker数据容器在主机上存储其数据(尚未决定采用哪种方法)
- Jenkins构建所有代码并创建Docker镜像,这些镜像将被推送到私有内部仓库
- 在DEV服务器上使用Puppet Docker模块运行集成测试
- 通过使用Docker通过Puppet将其推送到生产环境中
为什么我应该使用docker?
- 大型开发机器-可以很容易地运行多个应用程序实例,无需虚拟化(可以有不稳定的开发、稳定的开发、SIT等)
- 部署轻松(使用Docker和Puppet Docker模块),回滚简单(只需从Docker存储库中检索上一个版本即可)
- 快速迁移和生成新实例的能力
- 准备好轻松扩展系统的不同部分(例如,集群化Elasticsearch)
问题
- 这看起来合理吗?
欢迎任何建议,谢谢。