[TOC]mysql
在真实的研发环境中,通常存在local
、developer
、test
、product
等等环境。如何在这些环境中,实现统一的、标准化的配置问题是架构师须要考虑的一件事情。git
每种环境通常都须要配置以下部分:github
除线上环境须要考虑到稳定性外,在运维角色没有对容器化有丰富经验的状况下,能够考虑线上环境传统部署,如:本身搭组件集群或者使用云服务。redis
其他环境皆使用容器化部署。spring
能够考虑的部署方案有以下:sql
local
部署:docker-compose
;developer
、test
部署:docker-swarm
orkubernetes
。- 全部环境都基于
kubernetes
部署。PS:部署脚本通常由运维角色维护,
local
部署脚本从运维角色获取。docker
附上一个local
部署docker-compse
脚本数据库
docker-compose.yml
version: '2' services: mysql: image: mysql:5.6 command: [mysqld, --character-set-server=utf8mb4, --collation-server=utf8mb4_unicode_ci] environment: MYSQL_ROOT_PASSWORD: 123456 # For testing from the host: # mysql --host=127.0.0.1 --port=3306 --user root -p ports: - "3306:3306" redis: image: redis:3.0 command: ['redis-server', '--requirepass 123456'] expose: - 6379 ports: - "6379:6379" mongo: image: 'umputun/mongo-auth' environment: - MONGO_PASSWD=123456 ports: - "27017:27017"
PS:docker-compose官方文档springboot
PS:按需使用相应组件,也能够本身添加须要的组件,local
环境没作数据持久化处理,如需用在其他环境,请参考文档配置。架构
数据标准化主要解决的是各环境表结构不一致的问题。线上环境必定要关掉该功能。
线上环境的数据变动必定要按规范、走变动流程,经
DBA
或者运维
角色执行。其他环境我的解决方案:
flyway
springboot
环境中flyway
的使用application.yml
中填入相应配置文件flyway: enabled: true baseline-on-migrate: true locations: "db/migration" schemas: table_name
在指定目录下设置配置脚本
V{版本}__{脚本名}.sql
springboot
项目PS:flyway官网
配置中心解决
apollo
、nacos
、spring cloud config
local
环境能够从配置中心拉一份developer
环境配置下来,更改参数至local
环境组件。
PS:各环境重要参数,经过配置中心配置,而不是放在项目目录,上传至git
。这样配置信息不会有配置文件级外泄风险。
PS:apollo
PS:nacos
本文由博客一文多发平台 OpenWrite 发布!