1、项目

https://gitee.com/y_project/RuoYi-Cloud

2、架构

https://gitee.com/zhangmrit/ruoyi-cloud/blob/nacos/doc/ruoyi-cloud.png

image.png

3、上云优化

  • 1、每个微服务准备 bootstrap.properties,配置 nacos地址信息。默认使用本地
  • 2、每个微服务准备Dockerfile,启动命令,指定线上nacos配置等。
  • 3、每个微服务制作自己镜像。

附录

1、Dockerfile

  1. FROM openjdk:8-jdk
  2. LABEL maintainer=leifengyang
  3. #docker run -e PARAMS="--server.port 9090"
  4. ENV PARAMS="--server.port=8080 --spring.profiles.active=prod --spring.cloud.nacos.discovery.server-addr=his-nacos.his:8848 --spring.cloud.nacos.config.server-addr=his-nacos.his:8848 --spring.cloud.nacos.config.namespace=prod --spring.cloud.nacos.config.file-extension=yml"
  5. RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone
  6. COPY target/*.jar /app.jar
  7. EXPOSE 8080
  8. #
  9. ENTRYPOINT ["/bin/sh","-c","java -Dfile.encoding=utf8 -Djava.security.egd=file:/dev/./urandom -jar app.jar ${PARAMS}"]

规则:
1、容器默认以8080端口启动
2、时间为CST
3、环境变量 PARAMS 可以动态指定配置文件中任意的值
4、nacos集群内地址为 his-nacos.his:8848
5、微服务默认启动加载 nacos中 服务名-激活的环境.yml 文件,所以线上的配置可以全部写在nacos中。

2、部署nacos

1、nacos.sql文件

1、下载nacos数据库文件 https://github.com/alibaba/nacos/blob/develop/distribution/conf/nacos-mysql.sql

  1. #2、要执行以下文件,按照要求先创库
  2. CREATE DATABASE `nacos`;
  3. USE nacos;
  4. ####################################################
  5. /*
  6. * Copyright 1999-2018 Alibaba Group Holding Ltd.
  7. *
  8. * Licensed under the Apache License, Version 2.0 (the "License");
  9. * you may not use this file except in compliance with the License.
  10. * You may obtain a copy of the License at
  11. *
  12. * http://www.apache.org/licenses/LICENSE-2.0
  13. *
  14. * Unless required by applicable law or agreed to in writing, software
  15. * distributed under the License is distributed on an "AS IS" BASIS,
  16. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  17. * See the License for the specific language governing permissions and
  18. * limitations under the License.
  19. */
  20. /******************************************/
  21. /* 数据库全名 = nacos_config */
  22. /* 表名称 = config_info */
  23. /******************************************/
  24. CREATE TABLE `config_info` (
  25. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  26. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  27. `group_id` varchar(255) DEFAULT NULL,
  28. `content` longtext NOT NULL COMMENT 'content',
  29. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  30. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  31. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  32. `src_user` text COMMENT 'source user',
  33. `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  34. `app_name` varchar(128) DEFAULT NULL,
  35. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  36. `c_desc` varchar(256) DEFAULT NULL,
  37. `c_use` varchar(64) DEFAULT NULL,
  38. `effect` varchar(64) DEFAULT NULL,
  39. `type` varchar(64) DEFAULT NULL,
  40. `c_schema` text,
  41. PRIMARY KEY (`id`),
  42. UNIQUE KEY `uk_configinfo_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
  43. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info';
  44. /******************************************/
  45. /* 数据库全名 = nacos_config */
  46. /* 表名称 = config_info_aggr */
  47. /******************************************/
  48. CREATE TABLE `config_info_aggr` (
  49. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  50. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  51. `group_id` varchar(255) NOT NULL COMMENT 'group_id',
  52. `datum_id` varchar(255) NOT NULL COMMENT 'datum_id',
  53. `content` longtext NOT NULL COMMENT '内容',
  54. `gmt_modified` datetime NOT NULL COMMENT '修改时间',
  55. `app_name` varchar(128) DEFAULT NULL,
  56. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  57. PRIMARY KEY (`id`),
  58. UNIQUE KEY `uk_configinfoaggr_datagrouptenantdatum` (`data_id`,`group_id`,`tenant_id`,`datum_id`)
  59. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='增加租户字段';
  60. /******************************************/
  61. /* 数据库全名 = nacos_config */
  62. /* 表名称 = config_info_beta */
  63. /******************************************/
  64. CREATE TABLE `config_info_beta` (
  65. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  66. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  67. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  68. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  69. `content` longtext NOT NULL COMMENT 'content',
  70. `beta_ips` varchar(1024) DEFAULT NULL COMMENT 'betaIps',
  71. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  72. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  73. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  74. `src_user` text COMMENT 'source user',
  75. `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  76. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  77. PRIMARY KEY (`id`),
  78. UNIQUE KEY `uk_configinfobeta_datagrouptenant` (`data_id`,`group_id`,`tenant_id`)
  79. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_beta';
  80. /******************************************/
  81. /* 数据库全名 = nacos_config */
  82. /* 表名称 = config_info_tag */
  83. /******************************************/
  84. CREATE TABLE `config_info_tag` (
  85. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  86. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  87. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  88. `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  89. `tag_id` varchar(128) NOT NULL COMMENT 'tag_id',
  90. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  91. `content` longtext NOT NULL COMMENT 'content',
  92. `md5` varchar(32) DEFAULT NULL COMMENT 'md5',
  93. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  94. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  95. `src_user` text COMMENT 'source user',
  96. `src_ip` varchar(50) DEFAULT NULL COMMENT 'source ip',
  97. PRIMARY KEY (`id`),
  98. UNIQUE KEY `uk_configinfotag_datagrouptenanttag` (`data_id`,`group_id`,`tenant_id`,`tag_id`)
  99. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_info_tag';
  100. /******************************************/
  101. /* 数据库全名 = nacos_config */
  102. /* 表名称 = config_tags_relation */
  103. /******************************************/
  104. CREATE TABLE `config_tags_relation` (
  105. `id` bigint(20) NOT NULL COMMENT 'id',
  106. `tag_name` varchar(128) NOT NULL COMMENT 'tag_name',
  107. `tag_type` varchar(64) DEFAULT NULL COMMENT 'tag_type',
  108. `data_id` varchar(255) NOT NULL COMMENT 'data_id',
  109. `group_id` varchar(128) NOT NULL COMMENT 'group_id',
  110. `tenant_id` varchar(128) DEFAULT '' COMMENT 'tenant_id',
  111. `nid` bigint(20) NOT NULL AUTO_INCREMENT,
  112. PRIMARY KEY (`nid`),
  113. UNIQUE KEY `uk_configtagrelation_configidtag` (`id`,`tag_name`,`tag_type`),
  114. KEY `idx_tenant_id` (`tenant_id`)
  115. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='config_tag_relation';
  116. /******************************************/
  117. /* 数据库全名 = nacos_config */
  118. /* 表名称 = group_capacity */
  119. /******************************************/
  120. CREATE TABLE `group_capacity` (
  121. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  122. `group_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Group ID,空字符表示整个集群',
  123. `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  124. `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  125. `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  126. `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数,,0表示使用默认值',
  127. `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  128. `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  129. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  130. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  131. PRIMARY KEY (`id`),
  132. UNIQUE KEY `uk_group_id` (`group_id`)
  133. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='集群、各Group容量信息表';
  134. /******************************************/
  135. /* 数据库全名 = nacos_config */
  136. /* 表名称 = his_config_info */
  137. /******************************************/
  138. CREATE TABLE `his_config_info` (
  139. `id` bigint(64) unsigned NOT NULL,
  140. `nid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
  141. `data_id` varchar(255) NOT NULL,
  142. `group_id` varchar(128) NOT NULL,
  143. `app_name` varchar(128) DEFAULT NULL COMMENT 'app_name',
  144. `content` longtext NOT NULL,
  145. `md5` varchar(32) DEFAULT NULL,
  146. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  147. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  148. `src_user` text,
  149. `src_ip` varchar(50) DEFAULT NULL,
  150. `op_type` char(10) DEFAULT NULL,
  151. `tenant_id` varchar(128) DEFAULT '' COMMENT '租户字段',
  152. PRIMARY KEY (`nid`),
  153. KEY `idx_gmt_create` (`gmt_create`),
  154. KEY `idx_gmt_modified` (`gmt_modified`),
  155. KEY `idx_did` (`data_id`)
  156. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='多租户改造';
  157. /******************************************/
  158. /* 数据库全名 = nacos_config */
  159. /* 表名称 = tenant_capacity */
  160. /******************************************/
  161. CREATE TABLE `tenant_capacity` (
  162. `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  163. `tenant_id` varchar(128) NOT NULL DEFAULT '' COMMENT 'Tenant ID',
  164. `quota` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '配额,0表示使用默认值',
  165. `usage` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '使用量',
  166. `max_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个配置大小上限,单位为字节,0表示使用默认值',
  167. `max_aggr_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '聚合子配置最大个数',
  168. `max_aggr_size` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '单个聚合数据的子配置大小上限,单位为字节,0表示使用默认值',
  169. `max_history_count` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '最大变更历史数量',
  170. `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
  171. `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '修改时间',
  172. PRIMARY KEY (`id`),
  173. UNIQUE KEY `uk_tenant_id` (`tenant_id`)
  174. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='租户容量信息表';
  175. CREATE TABLE `tenant_info` (
  176. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
  177. `kp` varchar(128) NOT NULL COMMENT 'kp',
  178. `tenant_id` varchar(128) default '' COMMENT 'tenant_id',
  179. `tenant_name` varchar(128) default '' COMMENT 'tenant_name',
  180. `tenant_desc` varchar(256) DEFAULT NULL COMMENT 'tenant_desc',
  181. `create_source` varchar(32) DEFAULT NULL COMMENT 'create_source',
  182. `gmt_create` bigint(20) NOT NULL COMMENT '创建时间',
  183. `gmt_modified` bigint(20) NOT NULL COMMENT '修改时间',
  184. PRIMARY KEY (`id`),
  185. UNIQUE KEY `uk_tenant_info_kptenantid` (`kp`,`tenant_id`),
  186. KEY `idx_tenant_id` (`tenant_id`)
  187. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='tenant_info';
  188. CREATE TABLE `users` (
  189. `username` varchar(50) NOT NULL PRIMARY KEY,
  190. `password` varchar(500) NOT NULL,
  191. `enabled` boolean NOT NULL
  192. );
  193. CREATE TABLE `roles` (
  194. `username` varchar(50) NOT NULL,
  195. `role` varchar(50) NOT NULL,
  196. UNIQUE INDEX `idx_user_role` (`username` ASC, `role` ASC) USING BTREE
  197. );
  198. CREATE TABLE `permissions` (
  199. `role` varchar(50) NOT NULL,
  200. `resource` varchar(255) NOT NULL,
  201. `action` varchar(8) NOT NULL,
  202. UNIQUE INDEX `uk_role_permission` (`role`,`resource`,`action`) USING BTREE
  203. );
  204. INSERT INTO users (username, password, enabled) VALUES ('nacos', '$2a$10$EuWPZHzz32dJN7jexM34MOeYirDdFAZm2kuWj7VEOJhhZkDrxfvUu', TRUE);
  205. INSERT INTO roles (username, role) VALUES ('nacos', 'ROLE_ADMIN');

2、application.properties 文件

  1. spring.datasource.platform=mysql
  2. db.num=1
  3. db.url.0=jdbc:mysql://11.162.196.16:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
  4. db.user=nacos_devtest
  5. db.password=youdontknow

3、推送镜像给阿里云

  • 开通阿里云“容器镜像服务(个人版)”
    • 创建一个名称空间(lfy_ruoyi)。(存储镜像)
    • 推送镜像到阿里云镜像仓库 ```bash $ docker login —username=forsum** registry.cn-hangzhou.aliyuncs.com

把本地镜像,改名,成符合阿里云名字规范的镜像。

$ docker tag [ImageId] registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/镜像名:[镜像版本号]

docker tag 461955fe1e57 registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/ruoyi-visual-monitor:v1

$ docker push registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/镜像名:[镜像版本号]

docker push registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/ruoyi-visual-monitor:v1

  1. <a name="mt1Vc"></a>
  2. ## 4、ruoyi所有镜像
  3. ```bash
  4. docker pull registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/ruoyi-auth:v2
  5. docker pull registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/ruoyi-file:v2
  6. docker pull registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/ruoyi-gateway:v2
  7. docker pull registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/ruoyi-job:v2
  8. docker pull registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/ruoyi-system:v2
  9. docker pull registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/ruoyi-visual-monitor:v2
  10. docker pull registry.cn-hangzhou.aliyuncs.com/lfy_ruoyi/ruoyi-ui:v2

5、部署规则

  • 应用一启动会获取到 “应用名-激活的环境标识.yml”
  • 每次部署应用的时候,需要提前修改nacos线上配置,确认好每个中间件的连接地址是否正确

redis: his-redis.his
mysql: