【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.mzph.cn/news/215538.shtml

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

相关文章

Qt/C++音视频开发59-使用mdk-sdk组件/原qtav作者力作/性能凶残/超级跨平台

一、前言 最近一个月一直在研究mdk-sdk音视频组件,这个组件是原qtav作者的最新力作,提供了各种各样的示例demo,不仅限于支持C,其他各种比如java/flutter/web/android等全部支持,性能上也是杠杠的,目前大概…

cadence中如何在更新原理图封装

cadence中如何在更新原理图封装 一、更改原理图封装 当原理图画好后,如果我们发现某个封装错了,需要改动,需要找到你最初画Library中器件封装文件打开,进行修改,修改好后保存。 二、更新封装 保存好后,…

C/C++ 有效的字母异位词

题目: 给定两个字符串s和t,编写一个函数来判断t是否是s的字母异位词。 注:若s和t中每个字符出现的次数都相同,则称s和t互为字母异位词。 示例 1: 输入: s "anagram", t "nagaram" 输出: true …

【IDEA】反向撤销操作快捷键 ctrl+shift+z 和搜狗热键冲突的解决办法

当我们执行某些操作时与搜狗热键冲突,直接取消搜狗的快捷键即可!!!以下以 ctrlshiftz 为例。 在输入悬浮框右键找到更多设置 按键里面找到系统功能快捷键设置 取消掉冲突的热键即可

ARM day6

2.串口发送指令控制硬件工作 结果: uart.h #ifndef __UART_H__ #define __UART_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" #include "stm32mp1xx_uart.h"void myuart4_init(); void myputchar(char i); cha…

C++ this指针

通常情况下,类的成员函数都只涉及一个对象,即调用它的对象。但有时候方法可能涉及到两个对象,在这种情况就需要使用到C的this指针。 class Stock { private: ... double total_val; ... public: double total() const {return total_val;} }…

【Linux】进程周边002之进程状态

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》 🌝每一个不曾起舞的日子,都是对生命的辜负 目录 前言 1.什么是状态? …

Python中的魔力编程:掌握面向对象之道

Python中的面向对象编程 背景: ​ 最近在看一些代码的时候,对类中的一些内置方法不是很懂,因此出一篇文章来细说一下,希望大家看完后对Python中类有一个清楚的认识。 基础铺垫: ​ 面向对象的三个特点:…

深入探索 Spring Boot:简化开发,加速部署的全方位利器

目录 导言 1. 自动配置(Auto-Configuration) 2. 起步依赖(Starter Dependencies) 3. 嵌入式 Web 服务器 4. Actuator 5. 外部化配置 6. 简化的安全性配置 7. Spring Boot CLI 8. Spring Boot DevTools 导言 在当今软件开…

java基础之抽象的概念(全网最详细)

一.抽象的概念 如下图所示: 如上图所示,一个父类为图形,计算图形的面积方法,那么就会有疑问,计算哪个图形的面积呢?所以这个计算图形的面积方法就称为抽象方法; 二.抽象方法和抽象类的格式 …

3、Kafka 线上集群部署方案怎么做?

文章目录 1、操作系统的选择1.1、I/O 模型的使用1.2、数据网络传输效率1.3、社区支持度 2、磁盘的选择3、磁盘容量的规划3.1、举例思考本问题:3.2、计算一下:3.3、规划磁盘容量时你需要考虑下面这几个元素: 4、带宽规划4.1、计算 总结 1、操作…

电商淘宝爬虫API与淘宝官方开放平台API的区别以及如何选择适合自己的API接口

随着数字化时代的到来,数据已经成为企业竞争力的重要因素。为了获取数据,企业或个人常常需要使用API接口。常见的API接口包括爬虫API和官方开放平台API。本文将详细介绍这两种API接口的区别以及如何选择适合自己的API接口。 一、爬虫API与官方开放平台A…

如何使用GaussDB创建外表(FOREIGN TABLE)

目录 一、前言 二、创建外表的特点 二、GaussDB创建外表访问外部数据库表(示例) 1、创建外表 2、FAQ:CREATE USER MAPPING错误 三、GaussDB创建外表映射数据文件(示例) 1、创建数据文件 2、创建外表 3、FAQ&a…

C++基础知识

目录 前言: 命名空间 命名空间的定义 命名空间的使用 c输入与输出 缺省参数 函数重载 引用 引用的特性 常引用 引用的使用场景 引用做参数 引用做返回值 引用与指针的区别 内联函数 内联函数的特性 前言: C 语言是结构化和模块化的语言&…

谈谈MYSQL主从复制原理

目录 概述 要点binlog日志 主从复制过程 总结 概述 MySQL 主从复制是指数据可以从一个MySQL数据库服务器主节点复制到一个或多个从节点。 MySQL 默认采用异步复制方式。从节点不用一直访问主服务器来更新自己的数据,数据的更新可以在远程连接上进行&#xff0…

Volatility3内存取证工具安装及入门在Linux下的安装教程

1-1. Volatility3简介 Volatility 是一个完全开源的工具,用于从内存 (RAM) 样本中提取数字工件。支持Windows,Linux,MaC,Android等多类型操作系统系统的内存取证。 针对竞赛这块(CTF、技能大赛等)基本上都…

瑞萨RZ/G2L核心板Linux Log目录文件详解

为了排除系统问题,监控系统健康状况以及了解系统与应用程序的交互方式,我们需要了解各log文件的作用,以G2L中yocto文件系统为例,在系统/var/log/目录下会存放记录系统中各个部分的log文件作用如下: 1. 文件详情 下图…

Ubuntu系统部署Inis博客并使用内网穿透发布到公网随时随地远程访问

目录 前言 推荐 1. Inis博客网站搭建 1.1. Inis博客网站下载和安装 1.2 Inis博客网站测试 1.3 cpolar的安装和注册 2. 本地网页发布 2.1 Cpolar临时数据隧道 2.2 Cpolar稳定隧道(云端设置) 2.3.Cpolar稳定隧道(本地设置)…

鸿蒙原生应用/元服务开发-Stage模型能力接口(二)

ohos.app.ability.AbilityConstant (AbilityConstant)一、说明 AbilityConstant提供Ability相关的枚举,包括设置初次启动原因、上次退出原因、迁移结果、窗口类型等。本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口…

matlab 最小二乘拟合平面(拉格朗日乘子法)

目录 一、算法原理二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。博客长期更新,爬虫自重。 一、算法原理 设拟合出的平面方程为: a x + b y &#