前言:最近拿到一台linux服务器,需要搭建docker + nginx + tomcat + gitlib + jenkins + mssql环境,在博客做个记录,方便自己随时查找方便,同时希望对其他同学有些帮助。

服务器选择centos8.0 64位 ,基于容器docker(Docker version 19.03.8, build afacb8b)

前端:nginx 1.17.9
后端:tomcat 8.5.53
代码储存:gitlab
自动发布:jenkins

共有三个环境,分为8个容器(6个开发容器 + 2个辅助容器)
本地开发环境 本地下载安装mssql

frontend backend mssql
测试环境 project-frontend-nginx1.85-dev project-backend-tomcat1.85-dev project-mssql2017-dev
生产环境 project-frontend-nginx1.85-prod project-backend-tomcat1.85-prod project-mssql2017-prod
gitlab project-gitlab1.2.3
jenkins project-jenkens1.2.3

容器命名规则 => 项目名称+项目类型+启动服务器(+版本号) + 开发环境

端口管理(开放自定义端口,需要到阿里云配置,不然不能访问)

frontend backend mssql
测试环境 9099 8088 14330
生产环境 9090 8080 1433
gitlab 2280
jenkins 8089

2020-4-8更新
由于配置不高,jenkins构建的时候资源不够,导致构建失败,所以调整mssql容器,太占资源了。

调整如下:project-mssql2017-dev 和 project-mssql2017-prod 合并成 project-mssql2017
在project-mssql2017中建两个数据库,分别代表测试库(projectdb)和生产库(project)。

端口统一成:1433, 关闭14330端口

结语:
为啥没有一个容器,放dev和prod两个项目,在当初的设想中,两个项目交错在一起,感觉很麻烦,一个容器出错,导致全部项目都访问不了,所以就分开成两个容器部署。例如:dev坏了,prod还能用。

我也不清楚这种模式对不对。自己摸索着弄。由于时间仓促,东西写的不是很详细,主要想表达出这种思想。