当前位置:   article > 正文

【Jeecg Boot 3 - 第二天】1.1、后端 docker-compose 部署 JEECGBOOT3_jeecgboot打包部署

jeecgboot打包部署

一、场景

二、实战

▶  2.1 修改配置文件 

>  目的一:将 dev 变更为生产环境 prod

>  目的二:方便spring项目调用docker同个network下的redis和mysql 

▶  2.2 编写dockerfile

▶  2.3 编写docker-compose.yaml

▶  2.4 打包项目

▶  2.5 将文件上传到服务器下

▶  2.6 创建并运行容器(启动项目)

▶  2.5 验证 - 登录 knife4j 文档

三、思考 


一、场景

  • 服务器:腾讯云-ECS

  • 容器技术:docker + docker-compose

  • 后端:JEECGBOOT 3.6

  • 数据库:redis , mysql

二、实战

  2.1 修改配置文件 

>  目的一:将 dev 变更为生产环境 prod
  • 修改 application.yml

>  目的二方便spring项目调用docker同个network下的redis和mysql 
  • 修改 application-prod.yml
  • 说明:这里使用容器名访问只是为了提升IO速度,也可以使用外网IP代替mysqlhost
  1. # 修改部分--start---
  2. # 说明:
  3. host: XXX.XXX.XXX.127 # host:腾讯云服务器外网ip
  4. version: ${host} - V 3.6
  5. mysqlhost: mysql5.7 # mysqlhost:mysql容器名称,下文引用
  6. redishost: redis-base # redishost:redis容器名称,下文引用
  7. mongodbhost: mongo # mongodbhost:mongodb容器名称
  8. mysqlport: 3306 # mysqlport:mysql端口号,下文引用
  9. redisport: 6379 # redisport:redis端口号,下文引用
  10. mongodbport: 27017 # mongodbport:mongodb端口号
  11. mysql-password: XXXXXXX # mysql-password:mysql密码,下文引用
  12. redis-password: XXXXXXX # redis-password:redis密码,下文引用
  13. mongo-password: XXXXXXX # mongo-password:mongo密码
  14. # 修改部分--end---
  15. server:
  16. port: 8080
  17. tomcat:
  18. max-swallow-size: -1
  19. error:
  20. include-exception: true
  21. include-stacktrace: ALWAYS
  22. include-message: ALWAYS
  23. servlet:
  24. context-path: /jeecg-boot
  25. compression:
  26. enabled: true
  27. min-response-size: 1024
  28. mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*
  29. management:
  30. endpoints:
  31. web:
  32. exposure:
  33. include: metrics,httptrace
  34. spring:
  35. servlet:
  36. multipart:
  37. max-file-size: 10MB
  38. max-request-size: 10MB
  39. mail:
  40. host: smtp.163.com
  41. username: ??
  42. password: ??
  43. properties:
  44. mail:
  45. smtp:
  46. auth: true
  47. starttls:
  48. enable: true
  49. required: true
  50. ## quartz定时任务,采用数据库方式
  51. quartz:
  52. job-store-type: jdbc
  53. initialize-schema: embedded
  54. #定时任务开关,true-开 false-关
  55. auto-startup: true
  56. #延迟1秒启动定时任务
  57. startup-delay: 1s
  58. #启动时更新己存在的Job
  59. overwrite-existing-jobs: true
  60. properties:
  61. org:
  62. quartz:
  63. scheduler:
  64. instanceName: MyScheduler
  65. instanceId: AUTO
  66. jobStore:
  67. class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
  68. driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
  69. tablePrefix: QRTZ_
  70. isClustered: true
  71. misfireThreshold: 12000
  72. clusterCheckinInterval: 15000
  73. threadPool:
  74. class: org.quartz.simpl.SimpleThreadPool
  75. threadCount: 10
  76. threadPriority: 5
  77. threadsInheritContextClassLoaderOfInitializingThread: true
  78. #json 时间戳统一转换
  79. jackson:
  80. date-format: yyyy-MM-dd HH:mm:ss
  81. time-zone: GMT+8
  82. jpa:
  83. open-in-view: false
  84. aop:
  85. proxy-target-class: true
  86. #配置freemarker
  87. freemarker:
  88. # 设置模板后缀名
  89. suffix: .ftl
  90. # 设置文档类型
  91. content-type: text/html
  92. # 设置页面编码格式
  93. charset: UTF-8
  94. # 设置页面缓存
  95. cache: false
  96. prefer-file-system-access: false
  97. # 设置ftl文件路径
  98. template-loader-path:
  99. - classpath:/templates
  100. template_update_delay: 0
  101. # 设置静态文件路径,js,css等
  102. mvc:
  103. static-path-pattern: /**
  104. #Spring Boot 2.6+后映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser,需要手动指定为ant-path-matcher
  105. pathmatch:
  106. matching-strategy: ant_path_matcher
  107. resource:
  108. static-locations: classpath:/static/,classpath:/public/
  109. autoconfigure:
  110. exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure
  111. datasource:
  112. druid:
  113. stat-view-servlet:
  114. enabled: true
  115. loginUsername: admin
  116. loginPassword: 123456
  117. allow:
  118. web-stat-filter:
  119. enabled: true
  120. dynamic:
  121. druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)
  122. # 连接池的配置信息
  123. # 初始化大小,最小,最大
  124. initial-size: 5
  125. min-idle: 5
  126. maxActive: 1000
  127. # 配置获取连接等待超时的时间
  128. maxWait: 60000
  129. # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
  130. timeBetweenEvictionRunsMillis: 60000
  131. # 配置一个连接在池中最小生存的时间,单位是毫秒
  132. minEvictableIdleTimeMillis: 300000
  133. validationQuery: SELECT 1 FROM DUAL
  134. testWhileIdle: true
  135. testOnBorrow: false
  136. testOnReturn: false
  137. # 打开PSCache,并且指定每个连接上PSCache的大小
  138. poolPreparedStatements: true
  139. maxPoolPreparedStatementPerConnectionSize: 20
  140. # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
  141. filters: stat,wall,slf4j
  142. # 打开mergeSql功能;慢SQL记录
  143. stat:
  144. merge-sql: true
  145. slow-sql-millis: 5000
  146. datasource:
  147. master:
  148. url: jdbc:mysql://${mysqlhost}:${mysqlport}/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
  149. username: root
  150. password: ${mysql-password}
  151. driver-class-name: com.mysql.cj.jdbc.Driver
  152. # 多数据源配置
  153. #multi-datasource1:
  154. #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
  155. #username: root
  156. #password: root
  157. #driver-class-name: com.mysql.cj.jdbc.Driver
  158. #redis 配置
  159. redis:
  160. database: 0
  161. host: ${redishost}
  162. port: ${redisport}
  163. password: ${redis-password}
  164. #mybatis plus 设置
  165. mybatis-plus:
  166. mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xml
  167. global-config:
  168. # 关闭MP3.0自带的banner
  169. banner: false
  170. db-config:
  171. #主键类型 0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
  172. id-type: ASSIGN_ID
  173. # 默认数据库表下划线命名
  174. table-underline: true
  175. configuration:
  176. # 这个配置会将执行的sql打印出来,在开发或测试的时候可以用
  177. #log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
  178. # 返回类型为Map,显示null对应的字段
  179. call-setters-on-nulls: true
  180. #jeecg专用配置
  181. minidao:
  182. base-package: org.jeecg.modules.jmreport.*,org.jeecg.modules.drag.*
  183. jeecg:
  184. # 平台上线安全配置
  185. firewall:
  186. # 数据源安全 (开启后,Online报表和图表的数据源为必填)
  187. dataSourceSafe: true
  188. # 低代码模式(dev:开发模式,prod:发布模式——关闭所有在线开发配置能力)
  189. lowCodeMode: prod
  190. # 签名密钥串(前后端要一致,正式发布请自行修改)
  191. signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a
  192. #签名拦截接口
  193. signUrls: /sys/dict/getDictItems/*,/sys/dict/loadDict/*,/sys/dict/loadDictOrderByValue/*,/sys/dict/loadDictItem/*,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys
  194. # local\minio\alioss
  195. uploadType: alioss
  196. # 前端访问地址
  197. domainUrl:
  198. pc: http://localhost:3100
  199. app: http://localhost:8051
  200. path:
  201. #文件上传根目录 设置
  202. upload: /opt/jeecg-boot/upload
  203. #webapp文件路径
  204. webapp: /opt/jeecg-boot/webapp
  205. shiro:
  206. excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/jmreport/bigscreen2/**,/api/getUserInfo
  207. #阿里云oss存储和大鱼短信秘钥配置
  208. oss:
  209. accessKey: ??
  210. secretKey: ??
  211. endpoint: oss-cn-beijing.aliyuncs.com
  212. bucketName: jeecgdev
  213. staticDomain: https://static.jeecg.com
  214. # ElasticSearch 设置
  215. elasticsearch:
  216. cluster-name: jeecg-ES
  217. cluster-nodes: 127.0.0.1:9200
  218. check-enabled: true
  219. # 在线预览文件服务器地址配置
  220. file-view-domain: http://fileview.jeecg.com
  221. # minio文件上传
  222. minio:
  223. minio_url: http://minio.jeecg.com
  224. minio_name: ??
  225. minio_pass: ??
  226. bucketName: otatest
  227. #大屏报表参数设置
  228. jmreport:
  229. #多租户模式,默认值为空(created:按照创建人隔离、tenant:按照租户隔离) (v1.6.2+ 新增)
  230. saasMode: created
  231. # 平台上线安全配置(v1.6.2+ 新增)
  232. firewall:
  233. # 数据源安全 (开启后,不允许使用平台数据源、SQL解析加签并且不允许查询数据库)
  234. dataSourceSafe: true
  235. # 低代码开发模式(dev:开发模式,prod:发布模式—关闭在线报表设计功能,分配角色admin、lowdeveloper可以放开限制)
  236. lowCodeMode: prod
  237. #xxl-job配置
  238. xxljob:
  239. enabled: false
  240. adminAddresses: http://127.0.0.1:9080/xxl-job-admin
  241. appname: ${spring.application.name}
  242. accessToken: ''
  243. address: 127.0.0.1:30007
  244. ip: 127.0.0.1
  245. port: 30007
  246. logPath: logs/jeecg/job/jobhandler/
  247. logRetentionDays: 30
  248. #分布式锁配置
  249. redisson:
  250. address: 127.0.0.1:6379
  251. password:
  252. type: STANDALONE
  253. enabled: true
  254. #cas单点登录
  255. cas:
  256. prefixUrl: http://cas.example.org:8443/cas
  257. #Mybatis输出sql日志
  258. logging:
  259. level:
  260. org.jeecg.modules.system.mapper: info
  261. #swagger
  262. knife4j:
  263. #开启增强配置
  264. enable: true
  265. #开启生产环境屏蔽
  266. production: false
  267. basic:
  268. enable: true
  269. username: jeecg
  270. password: jeecg1314
  271. #第三方登录
  272. justauth:
  273. enabled: true
  274. type:
  275. GITHUB:
  276. client-id: ??
  277. client-secret: ??
  278. redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/github/callback
  279. WECHAT_ENTERPRISE:
  280. client-id: ??
  281. client-secret: ??
  282. redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_enterprise/callback
  283. agent-id: ??
  284. DINGTALK:
  285. client-id: ??
  286. client-secret: ??
  287. redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/dingtalk/callback
  288. WECHAT_OPEN:
  289. client-id: ??
  290. client-secret: ??
  291. redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_open/callback
  292. cache:
  293. type: default
  294. prefix: 'demo::'
  295. timeout: 1h

 

  2.2 编写dockerfile

  1. FROM openjdk:8
  2. RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
  3. ADD jeecg-system-start-3.6.0.jar jeecg-system-start-3.6.0.jar
  4. ENTRYPOINT ["java","-jar","jeecg-system-start-3.6.0.jar"]

  2.3 编写docker-compose.yaml

  1. version: '3.1'
  2. services:
  3. jeecg-boot-server:
  4. container_name: jeecg-boot3.6
  5. build: .
  6. ports:
  7. - "9200:8080"
  8. image: jeecg-boot-image
  9. environment:
  10. TZ: Asia/Shanghai
  11. restart: always
  12. volumes:
  13. - ./logs:/logs
  14. networks:
  15. default:
  16. external:
  17. name: xph-network
  18. #这里networks可以自定义

  2.4 打包项目

  • IDEA中 -- Maven -- 运行 clean -- install -- 获取 jeecg-system-start-3.6.0.jar

 

  2.5 将文件上传到服务器下

  2.6 创建并运行容器(启动项目)

  1. # 进入上一步上传的目录下
  2. cd /mnt/docker/jeecgboot3.6/
  3. # 启动项目
  4. docker-compose up -d --build

  2.5 验证 - 登录 knife4j 文档

  • knife4j 账号 jeecg 密码 jeecg1314

  • 在 yml 中设置

 

 

三、思考 

项目打包jar 近200M,部署上传速度缓慢,如何缩小成100倍以下内,见下一章

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/488493
推荐阅读
相关标签
  

闽ICP备14008679号