项目部署规范
规范目的
本规范主要目的是为了规范部署流程,规避部署期间带来的各种问题,提升部署效率,使部署更加方便、安全。
技术架构
ip划分
我们在部署前先划分网络,将不同的设备设置在固定的网段区间。
- 网段开头统一以172.29开头,所有服务都在改网段下;
- 每一套服务(包括前后端服务等)都占有一个网段,例如:172.29.0网段、172.29.1网段、172.29.2网段;
- 共享服务(如数据库、redis)等,五个网段共享一个,比如172.29.0-172.29.4共享一个数据库和redis;
- 固定服务ip,172.29.*.0~172.29.*.20为第三方组件ip段,172.29.*.21以后为项目ip。约束172.29.*.2为MySQL服务,172.29.*.3为Redis服务,172.29.*.4为Postgres服务,172.29.*.5为MongoDB服务,172.29.*.21为Vue前端服务,172.29.*.22为java后端服务,172.29.*.23为ruby后端服务。
jar共享
后端项目需要启动docker时需要把项目的lib数据卷进行本地化映射,使得多个项目共享一套依赖。
端口设置
- 前端端口:80
- 后端端口:8080
共享资源创建规范
执行方针
参照《项目部署规范》一文进行配置部署。
共享配置
<共享号> 计算公式:共享号 = 取整(项目部署号 / 5),<端口号> 计算公式:端口号 = 10000 + 默认端口号 + 共享号(例如:MySQL端口号 = 10000 + 3306 + 1 = 13307),<密码> 每个组件的root密码使用相同的,由管理人员统一记录
MySQL部署
docker run --restart=always --name mysql<共享号> -p <端口号>:3306 -v /home/docker_volumes/mysql<共享号>:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=<密码> -d mysql:5.7
Redis部署
docker run --restart=always --name redis<共享号> -v /etc/localtime:/etc/localtime:ro -d redis:7.0
安装MySQL并且初始化数据库和用户
文件结构
- Dockerfile
- install_data.sh
- schema.s