一、場景
二、實戰
???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倍以下內,見下一章