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

一、场景

二、实战

▶  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

# 修改部分--start---
# 说明:
host: XXX.XXX.XXX.127    # host:腾讯云服务器外网ip
version: ${host} - V 3.6
mysqlhost: mysql5.7      # mysqlhost:mysql容器名称,下文引用
redishost: redis-base    # redishost:redis容器名称,下文引用
mongodbhost: mongo       # mongodbhost:mongodb容器名称
mysqlport: 3306          # mysqlport:mysql端口号,下文引用
redisport: 6379          # redisport:redis端口号,下文引用
mongodbport: 27017       # mongodbport:mongodb端口号
mysql-password: XXXXXXX  # mysql-password:mysql密码,下文引用
redis-password: XXXXXXX  # redis-password:redis密码,下文引用
mongo-password: XXXXXXX  # mongo-password:mongo密码
# 修改部分--end---server:port: 8080tomcat:max-swallow-size: -1error:include-exception: trueinclude-stacktrace: ALWAYSinclude-message: ALWAYSservlet:context-path: /jeecg-bootcompression:enabled: truemin-response-size: 1024mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*management:endpoints:web:exposure:include: metrics,httptracespring:servlet:multipart:max-file-size: 10MBmax-request-size: 10MBmail:host: smtp.163.comusername: ??password: ??properties:mail:smtp:auth: truestarttls:enable: truerequired: true## quartz定时任务,采用数据库方式quartz:job-store-type: jdbcinitialize-schema: embedded#定时任务开关,true-开  false-关auto-startup: true#延迟1秒启动定时任务startup-delay: 1s#启动时更新己存在的Joboverwrite-existing-jobs: trueproperties:org:quartz:scheduler:instanceName: MySchedulerinstanceId: AUTOjobStore:class: org.springframework.scheduling.quartz.LocalDataSourceJobStoredriverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegatetablePrefix: QRTZ_isClustered: truemisfireThreshold: 12000clusterCheckinInterval: 15000threadPool:class: org.quartz.simpl.SimpleThreadPoolthreadCount: 10threadPriority: 5threadsInheritContextClassLoaderOfInitializingThread: true#json 时间戳统一转换jackson:date-format: yyyy-MM-dd HH:mm:sstime-zone: GMT+8jpa:open-in-view: falseaop:proxy-target-class: true#配置freemarkerfreemarker:# 设置模板后缀名suffix: .ftl# 设置文档类型content-type: text/html# 设置页面编码格式charset: UTF-8# 设置页面缓存cache: falseprefer-file-system-access: false# 设置ftl文件路径template-loader-path:- classpath:/templatestemplate_update_delay: 0# 设置静态文件路径,js,css等mvc:static-path-pattern: /**#Spring Boot 2.6+后映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser,需要手动指定为ant-path-matcherpathmatch:matching-strategy: ant_path_matcherresource:static-locations: classpath:/static/,classpath:/public/autoconfigure:exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfiguredatasource:druid:stat-view-servlet:enabled: trueloginUsername: adminloginPassword: 123456allow:web-stat-filter:enabled: truedynamic:druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)# 连接池的配置信息# 初始化大小,最小,最大initial-size: 5min-idle: 5maxActive: 1000# 配置获取连接等待超时的时间maxWait: 60000# 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒timeBetweenEvictionRunsMillis: 60000# 配置一个连接在池中最小生存的时间,单位是毫秒minEvictableIdleTimeMillis: 300000validationQuery: SELECT 1 FROM DUALtestWhileIdle: truetestOnBorrow: falsetestOnReturn: false# 打开PSCache,并且指定每个连接上PSCache的大小poolPreparedStatements: truemaxPoolPreparedStatementPerConnectionSize: 20# 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙filters: stat,wall,slf4j# 打开mergeSql功能;慢SQL记录stat:merge-sql: trueslow-sql-millis: 5000datasource:master:url: jdbc:mysql://${mysqlhost}:${mysqlport}/jeecg-boot?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghaiusername: rootpassword: ${mysql-password}driver-class-name: com.mysql.cj.jdbc.Driver# 多数据源配置#multi-datasource1:#url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai#username: root#password: root#driver-class-name: com.mysql.cj.jdbc.Driver#redis 配置redis:database: 0host: ${redishost}port: ${redisport}password: ${redis-password}
#mybatis plus 设置
mybatis-plus:mapper-locations: classpath*:org/jeecg/modules/**/xml/*Mapper.xmlglobal-config:# 关闭MP3.0自带的bannerbanner: falsedb-config:#主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";id-type: ASSIGN_ID# 默认数据库表下划线命名table-underline: trueconfiguration:# 这个配置会将执行的sql打印出来,在开发或测试的时候可以用#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 返回类型为Map,显示null对应的字段call-setters-on-nulls: true
#jeecg专用配置
minidao:base-package: org.jeecg.modules.jmreport.*,org.jeecg.modules.drag.*
jeecg:# 平台上线安全配置firewall:# 数据源安全 (开启后,Online报表和图表的数据源为必填)dataSourceSafe: true# 低代码模式(dev:开发模式,prod:发布模式——关闭所有在线开发配置能力)lowCodeMode: prod# 签名密钥串(前后端要一致,正式发布请自行修改)signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a#签名拦截接口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# local\minio\aliossuploadType: alioss# 前端访问地址domainUrl:pc: http://localhost:3100app: http://localhost:8051path:#文件上传根目录 设置upload: /opt/jeecg-boot/upload#webapp文件路径webapp: /opt/jeecg-boot/webappshiro:excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/**,/jmreport/bigscreen2/**,/api/getUserInfo#阿里云oss存储和大鱼短信秘钥配置oss:accessKey: ??secretKey: ??endpoint: oss-cn-beijing.aliyuncs.combucketName: jeecgdevstaticDomain: https://static.jeecg.com# ElasticSearch 设置elasticsearch:cluster-name: jeecg-EScluster-nodes: 127.0.0.1:9200check-enabled: true# 在线预览文件服务器地址配置file-view-domain: http://fileview.jeecg.com# minio文件上传minio:minio_url: http://minio.jeecg.comminio_name: ??minio_pass: ??bucketName: otatest#大屏报表参数设置jmreport:#多租户模式,默认值为空(created:按照创建人隔离、tenant:按照租户隔离) (v1.6.2+ 新增)saasMode: created# 平台上线安全配置(v1.6.2+ 新增)firewall:# 数据源安全 (开启后,不允许使用平台数据源、SQL解析加签并且不允许查询数据库)dataSourceSafe: true# 低代码开发模式(dev:开发模式,prod:发布模式—关闭在线报表设计功能,分配角色admin、lowdeveloper可以放开限制)lowCodeMode: prod#xxl-job配置xxljob:enabled: falseadminAddresses: http://127.0.0.1:9080/xxl-job-adminappname: ${spring.application.name}accessToken: ''address: 127.0.0.1:30007ip: 127.0.0.1port: 30007logPath: logs/jeecg/job/jobhandler/logRetentionDays: 30#分布式锁配置redisson:address: 127.0.0.1:6379password:type: STANDALONEenabled: true
#cas单点登录
cas:prefixUrl: http://cas.example.org:8443/cas
#Mybatis输出sql日志
logging:level:org.jeecg.modules.system.mapper: info
#swagger
knife4j:#开启增强配置enable: true#开启生产环境屏蔽production: falsebasic:enable: trueusername: jeecgpassword: jeecg1314
#第三方登录
justauth:enabled: truetype:GITHUB:client-id: ??client-secret: ??redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/github/callbackWECHAT_ENTERPRISE:client-id: ??client-secret: ??redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_enterprise/callbackagent-id: ??DINGTALK:client-id: ??client-secret: ??redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/dingtalk/callbackWECHAT_OPEN:client-id: ??client-secret: ??redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_open/callbackcache:type: defaultprefix: 'demo::'timeout: 1h

 

  2.2 编写dockerfile

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

  2.3 编写docker-compose.yaml

version: '3.1'services:jeecg-boot-server:container_name: jeecg-boot3.6build: .ports:- "9200:8080"image: jeecg-boot-imageenvironment:TZ: Asia/Shanghairestart: alwaysvolumes:- ./logs:/logs
networks:default:external:name: xph-network
#这里networks可以自定义

  2.4 打包项目

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

 

  2.5 将文件上传到服务器下

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

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

  2.5 验证 - 登录 knife4j 文档

  • knife4j 账号 jeecg 密码 jeecg1314

  • 在 yml 中设置

 

 

三、思考 

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/266221.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

参数占位符#{}和${}

#是预处理而$是直接替换 Mybatis在处理#{}时,会将SQL中的#{}替换成占位符?,再使用preparedStatement的set方法来赋值。而Mybatis在处理 时,是将 {}时,是将 时,是将{}直接替换成变量的值 我们分别使用#{}和…

外包干了2年,技术退步明显...

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢交流讨论:欢迎加入我们一起学习!📢资源分享:耗时200小时精选的「软件测试」资…

[MySQL]SQL优化之索引的使用规则

🌈键盘敲烂,年薪30万🌈 目录 一、索引失效 📕最左前缀法则 📕范围查询> 📕索引列运算,索引失效 📕前模糊匹配 📕or连接的条件 📕字符串类型不加 …

【Spring】@SpringBootApplication注解解析

前言: 当我们第一次创建一个springboot工程时,我们会对启动类(xxxApplication)有许多困惑,为什么只要运行启动类我们在项目中自定义的bean无需配置类配置,扫描就能自动注入到IOC容器中?为什么我…

数据结构与算法-Rust 版读书笔记-2线性数据结构-双端队列

数据结构与算法-Rust 版读书笔记-2线性数据结构-双端队列 1、双端队列 deque又称为双端队列,双端队列是与队列类似的项的有序集合。deque有两个端部:首端和尾端。deque不同于队列的地方就在于项的添加和删除是不受限制的,既可以从首尾两端添…

基于JavaWeb+SpringBoot+Vue在线拍卖系统的设计和实现

基于JavaWebSpringBootVue在线拍卖系统系统的设计和实现 源码获取入口Lun文目录前言主要技术系统设计功能截图订阅经典源码专栏Java项目精品实战案例《500套》 源码获取 源码获取入口 Lun文目录 摘 要 1 Abstract 1 1 系统概述 4 1.1 概述 4 1.2课题意义 4 1.3 主要内容 4 2 …

二叉树题目:在受污染的二叉树中查找元素

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法一思路和算法代码复杂度分析 解法二思路和算法代码复杂度分析 题目 标题和出处 标题:在受污染的二叉树中查找元素 出处:1261. 在受污染的二叉树中查找元素 难度 5 级 题目描述 要求…

12.11

1.q&#xff0c;w&#xff0c;e亮led1&#xff0c;2&#xff0c;3&#xff1b; a&#xff0c;s&#xff0c;d灭led1&#xff0c;2&#xff0c;3&#xff1b; main.c #include "uar1.h"#include "led.h"void delay(int ms){int i,j;for(i0;i<ms;i){for…

WampServer本地部署结合内网穿透实现公网访问本地服务

文章目录 前言1.WampServer下载安装2.WampServer启动3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 Wamp 是一个 Windows系统下的 Apache PHP Mysql 集成安装环境&#xff0c;是一组常用来…

Altair Radioss碰撞 安全与冲击 衡祖仿真

Altair Radioss是解决瞬态加载工况下非线性问题的领先的结构分析求解器。其具备高扩展性、高品质、高鲁棒性&#xff0c;以及诸多功能&#xff1a;多域求解技术、高级材料功能(复合材料)等。Radioss求解器被广泛应用于汽车、航空航天、电子/家电、包装、轨道机车、生物医疗、能…

GoEasy使用手册

GoEasy官网 登录 - GoEasy 即时通讯聊天案例 GoEasy - GoEasy (gitee.com) 注意事项 接口使用人数上限为15&#xff0c;超出之后会请求超时返回408状态码&#xff0c;可以新建一个应用用来更换common Key 创建应用 ​ 添加应用名称&#xff0c;其余默认&#xff0c;点击…

【计算机网络】UDP报文详解

目录 一. UDP协议概述 二. UDP报文格式 首部 三. UDP的缓冲区 一. UDP协议概述 UDP——用户数据报协议&#xff0c;是传输层的一个重要协议 基于UDP的应用层协议有&#xff1a;DNS&#xff0c;TFTP&#xff0c;SNMP&#xff0c;NTP 协议全称默认端口号DNSDomain Name Se…