【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.pswp.cn/news/215538.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/215538.shtml
英文地址,請注明出處:http://en.pswp.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 …

2024年廣西職業院校技能大賽中職組《網絡安全》賽項樣題

2024年廣西職業院校技能大賽 中職組《網絡安全》賽項樣題 目錄 任務一 登錄安全加固 任務二 數據庫加固(Data) 任務三 Web安全加固(Web) 任務四 流量完整性保護(Web,Data) 任務五 事件監控 任務一 應急響應 任務二 …

295. 數據流的中位數

二分法實現 295. 數據流的中位數 295. 數據流的中位數 本題的第一個難點,要自己構造一個類(因為個人構造類的題目做的較少) 屬性: 數組的長度int 數組的數據結構 List保證原數組是一個有序數組,我使用了二分查找插入新…

【IDEA】反向撤銷操作快捷鍵 ctrl+shift+z 和搜狗熱鍵沖突的解決辦法

當我們執行某些操作時與搜狗熱鍵沖突,直接取消搜狗的快捷鍵即可!!!以下以 ctrlshiftz 為例。 在輸入懸浮框右鍵找到更多設置 按鍵里面找到系統功能快捷鍵設置 取消掉沖突的熱鍵即可

?gzip --- 對 gzip 格式的支持?

源代碼: Lib/gzip.py 此模塊提供的簡單接口幫助用戶壓縮和解壓縮文件,功能類似于 GNU 應用程序 gzip 和 gunzip。 數據壓縮由 zlib 模塊提供。 gzip 模塊提供 GzipFile 類和 open()、compress()、decompress() 幾個便利的函數。GzipFile 類可以讀寫 gz…

Codeforces Round 911 (Div. 2)

Codeforces Round 911 (Div. 2) A 有大于3的區間就可以無限取水&#xff0c;答案為2&#xff0c;其他的按照個數 #include <bits/stdc.h>using namespace std;void solve() {int n, k 0;cin >> n;string s, t "...";cin >> s;auto it search…

ARM day6

2.串口發送指令控制硬件工作 結果&#xff1a; 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…

element-ui基本使用

基本使用&#xff1a;npm i element-uimain.js&#xff1a;/*** 該文件是整個項目的入口文件*/ import Vue from vue; import App from ./App.vue; import ElementUI from element-ui; // 引入Element全部樣式 import element-ui/lib/theme-chalk/index.css;// 關閉vue的生產提…

C++ this指針

通常情況下&#xff0c;類的成員函數都只涉及一個對象&#xff0c;即調用它的對象。但有時候方法可能涉及到兩個對象&#xff0c;在這種情況就需要使用到C的this指針。 class Stock { private: ... double total_val; ... public: double total() const {return total_val;} }…

【Linux】進程周邊002之進程狀態

&#x1f440;樊梓慕&#xff1a;個人主頁 &#x1f3a5;個人專欄&#xff1a;《C語言》《數據結構》《藍橋杯試題》《LeetCode刷題筆記》《實訓項目》《C》《Linux》 &#x1f31d;每一個不曾起舞的日子&#xff0c;都是對生命的辜負 目錄 前言 1.什么是狀態&#xff1f; …

ChatGLM 手記

ChatGLM-6B&#xff1a;GitHub - THUDM/ChatGLM-6B: ChatGLM-6B: An Open Bilingual Dialogue Language Model | 開源雙語對話語言模型 ChatGLM3&#xff1a; GitHub - THUDM/ChatGLM3: ChatGLM3 series: Open Bilingual Chat LLMs | 開源雙語對話語言模型 chatglm.cpp&…

利用開源工具Chartmuseum,搭建私有helm chart倉庫

1、ChartMuseum是什么? ChartMuseum 是一個用 Go 語言寫的開源的 Helm Chart Repository 服務器,有多種 API 來完成對 Helm Chart Repository、Chart 以及 Server 的操作。所有可用的 API 以及使用方法可查看GitHub Repo。 2、ChartMuseum的安裝 ChartMuseum安裝可參考官網…

Python中的魔力編程:掌握面向對象之道

Python中的面向對象編程 背景&#xff1a; ? 最近在看一些代碼的時候&#xff0c;對類中的一些內置方法不是很懂&#xff0c;因此出一篇文章來細說一下&#xff0c;希望大家看完后對Python中類有一個清楚的認識。 基礎鋪墊&#xff1a; ? 面向對象的三個特點&#xff1a;…

C語言中的成員訪問:普通變量與指針變量的區別與使用

C語言中的成員訪問 在C語言中&#xff0c;我們可以通過變量來訪問它們的成員。根據變量的類型&#xff0c;我們使用不同的成員訪問符&#xff1a;.和->。本文將詳細介紹這兩個成員訪問符的使用。 目錄 普通變量的成員訪問指針變量的成員訪問示例代碼總結 普通變量的成員…

深入探索 Spring Boot:簡化開發,加速部署的全方位利器

目錄 導言 1. 自動配置&#xff08;Auto-Configuration&#xff09; 2. 起步依賴&#xff08;Starter Dependencies&#xff09; 3. 嵌入式 Web 服務器 4. Actuator 5. 外部化配置 6. 簡化的安全性配置 7. Spring Boot CLI 8. Spring Boot DevTools 導言 在當今軟件開…

java基礎之抽象的概念(全網最詳細)

一.抽象的概念 如下圖所示&#xff1a; 如上圖所示&#xff0c;一個父類為圖形&#xff0c;計算圖形的面積方法&#xff0c;那么就會有疑問&#xff0c;計算哪個圖形的面積呢&#xff1f;所以這個計算圖形的面積方法就稱為抽象方法&#xff1b; 二.抽象方法和抽象類的格式 …

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

文章目錄 1、操作系統的選擇1.1、I/O 模型的使用1.2、數據網絡傳輸效率1.3、社區支持度 2、磁盤的選擇3、磁盤容量的規劃3.1、舉例思考本問題&#xff1a;3.2、計算一下&#xff1a;3.3、規劃磁盤容量時你需要考慮下面這幾個元素&#xff1a; 4、帶寬規劃4.1、計算 總結 1、操作…

電商淘寶爬蟲API與淘寶官方開放平臺API的區別以及如何選擇適合自己的API接口

隨著數字化時代的到來&#xff0c;數據已經成為企業競爭力的重要因素。為了獲取數據&#xff0c;企業或個人常常需要使用API接口。常見的API接口包括爬蟲API和官方開放平臺API。本文將詳細介紹這兩種API接口的區別以及如何選擇適合自己的API接口。 一、爬蟲API與官方開放平臺A…