支持部署到docker

This commit is contained in:
OPGame 2019-07-24 21:12:42 +08:00
parent 66a36f05cb
commit f0fb9d36a9
11 changed files with 205 additions and 7 deletions

7
db/Dockerfile Normal file
View File

@ -0,0 +1,7 @@
FROM mysql:5.7
MAINTAINER opgames(opgames.cn@gmail.com)
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
COPY ./db/yami_shop.sql /docker-entrypoint-initdb.d

View File

@ -3,6 +3,9 @@ SQLyog Ultimate v12.5.1 (64 bit)
MySQL - 5.7.23 : Database - mall4j
*********************************************************************
*/
create database `yami_shops` default character set utf8 collate utf8_general_ci;
USE yami_shops;
/*!40101 SET NAMES utf8 */;
@ -115,10 +118,10 @@ CREATE TABLE `qrtz_job_details` (
/*Data for the table `qrtz_job_details` */
insert into `qrtz_job_details`(`SCHED_NAME`,`JOB_NAME`,`JOB_GROUP`,`DESCRIPTION`,`JOB_CLASS_NAME`,`IS_DURABLE`,`IS_NONCONCURRENT`,`IS_UPDATE_DATA`,`REQUESTS_RECOVERY`,`JOB_DATA`) values
('clusteredScheduler','TASK_10','DEFAULT',NULL,'com.yami.shop.quartz.config.QuartzJob','0','1','0','0','¬í\0sr\0org.quartz.JobDataMapŸ°ƒè¿©°Ë\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMapèÃûÅ](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMapæ.­(v\nÎ\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMapÚÁÃ\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~ûdê« \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0\ncouponTasksr\0java.util.Datehj<68>KYt\0\0xpw\0\0kds×sxt\0\r0 0 0/0 * * ?sr\0java.lang.Long;ä<E280B9>Ì<EFBFBD>\0J\0valuexr\0java.lang.Number†¬• ”à‹\0\0xp\0\0\0\0\0\0\0\nt\0 changeCoupont\0\0q\0~\0sr\0java.lang.Integerâ ¤÷<C2A4>8\0I\0valuexq\0~\0\0\0\0\0x\0'),
('clusteredScheduler','TASK_11','DEFAULT',NULL,'com.yami.shop.quartz.config.QuartzJob','0','1','0','0','¬í\0sr\0org.quartz.JobDataMapŸ°ƒè¿©°Ë\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMapèÃûÅ](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMapæ.­(v\nÎ\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMapÚÁÃ\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~ûdê« \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0\ncouponTasksr\0java.util.Datehj<68>KYt\0\0xpw\0\0kdu0Sxt\0\r0 0 0/1 * * ?sr\0java.lang.Long;ä<EFBFBD>Ì<EFBFBD>\0J\0valuexr\0java.lang.Number†¬• ”à‹\0\0xp\0\0\0\0\0\0\0 t\0deleteCouponUsert\0\0t\0)删除用户失效30天以上的优惠券sr\0java.lang.Integerâ ¤÷<C2A4>8\0I\0valuexq\0~\0\0\0\0\0x\0'),
('clusteredScheduler','TASK_12','DEFAULT',NULL,'com.yami.shop.quartz.config.QuartzJob','0','1','0','0','¬í\0sr\0org.quartz.JobDataMapŸ°ƒè¿©°Ë\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMapèÃûÅ](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMapæ.­(v\nÎ\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMapÚÁÃ\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~ûdê« \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0\ncouponTasksr\0java.util.Datehj<68>KYt\0\0xpw\0\0kdu¶üxt\0\r0 0 0/1 * * ?sr\0java.lang.Long;ä<E280B9>Ì<EFBFBD>\0J\0valuexr\0java.lang.Number†¬• ”à‹\0\0xp\0\0\0\0\0\0\0 t\0changeCouponUsert\0\0t\02改å<C2B9>˜ç”¨æˆ·ä¼˜æƒ åˆ¸çš„状æ€<C3A6>(设为失效状æ€<C3A6>)sr\0java.lang.Integerâ ¤÷<C2A4>8\0I\0valuexq\0~\0\0\0\0\0x\0'),
('clusteredScheduler','TASK_13','DEFAULT',NULL,'com.yami.shop.quartz.config.QuartzJob','0','1','0','0','¬í\0sr\0org.quartz.JobDataMapŸ°ƒè¿©°Ë\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMapèÃûÅ](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMapæ.­(v\nÎ\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMapÚÁÃ\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~ûdê« \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0\ncouponTasksr\0java.util.Datehj<68>KYt\0\0xpw\0\0kdv\n×xt\0\r0 0 0/1 * * ?sr\0java.lang.Long;ä<E280B9>Ì<EFBFBD>\0J\0valuexr\0java.lang.Number†¬• ”à‹\0\0xp\0\0\0\0\0\0\0\rt\0 putOnCoupont\0\0t\0投放优惠券sr\0java.lang.Integerâ ¤÷<C2A4>8\0I\0valuexq\0~\0\0\0\0\0x\0');
('clusteredScheduler','TASK_10','DEFAULT',NULL,'com.yami.shop.quartz.config.QuartzJob','0','1','0','0','<EFBFBD><EFBFBD>\0sr\0org.quartz.JobDataMap<61><70><EFBFBD><EFBFBD><E8BFA9>\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMap<61><08><><EFBFBD><EFBFBD>](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMap<13>.<2E>(v\n<>\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMap<07><><EFBFBD>`<60>\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~<EFBFBD>dꂑ<EFBFBD> \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0\ncouponTasksr\0java.util.Datehj<68>KYt\0\0xpw\0\0kds<EFBFBD>sxt\0\r0 0 0/0 * * ?sr\0java.lang.Long;<3B><>̏#<23>\0J\0valuexr\0java.lang.Number<65><72><EFBFBD> <0B><><EFBFBD>\0\0xp\0\0\0\0\0\0\0\nt\0 changeCoupont\0\0q\0~\0sr\0java.lang.Integer<><E2A0A4><EFBFBD>8\0I\0valuexq\0~\0\0\0\0\0x\0'),
('clusteredScheduler','TASK_11','DEFAULT',NULL,'com.yami.shop.quartz.config.QuartzJob','0','1','0','0','<EFBFBD><EFBFBD>\0sr\0org.quartz.JobDataMap<61><70><EFBFBD><EFBFBD><E8BFA9>\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMap<61><08><><EFBFBD><EFBFBD>](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMap<13>.<2E>(v\n<>\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMap<07><><EFBFBD>`<60>\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~<EFBFBD>dꂑ<EFBFBD> \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0\ncouponTasksr\0java.util.Datehj<68>KYt\0\0xpw\0\0kdu0Sxt\0\r0 0 0/1 * * ?sr\0java.lang.Long;<EFBFBD><EFBFBD>̏#<23>\0J\0valuexr\0java.lang.Number<65><72><EFBFBD> <0B><><EFBFBD>\0\0xp\0\0\0\0\0\0\0 t\0deleteCouponUsert\0\0t\0)删除用户失效30天以上的优惠券sr\0java.lang.Integer<><E2A0A4><EFBFBD>8\0I\0valuexq\0~\0\0\0\0\0x\0'),
('clusteredScheduler','TASK_12','DEFAULT',NULL,'com.yami.shop.quartz.config.QuartzJob','0','1','0','0','<EFBFBD><EFBFBD>\0sr\0org.quartz.JobDataMap<61><70><EFBFBD><EFBFBD><E8BFA9>\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMap<61><08><><EFBFBD><EFBFBD>](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMap<13>.<2E>(v\n<>\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMap<07><><EFBFBD>`<60>\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~<EFBFBD>dꂑ<EFBFBD> \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0\ncouponTasksr\0java.util.Datehj<68>KYt\0\0xpw\0\0kdu<EFBFBD><EFBFBD>xt\0\r0 0 0/1 * * ?sr\0java.lang.Long;<3B><>̏#<23>\0J\0valuexr\0java.lang.Number<65><72><EFBFBD> <0B><><EFBFBD>\0\0xp\0\0\0\0\0\0\0 t\0changeCouponUsert\0\0t\02改变用户优惠券的状态(设为失效状态)sr\0java.lang.Integer<><E2A0A4><EFBFBD>8\0I\0valuexq\0~\0\0\0\0\0x\0'),
('clusteredScheduler','TASK_13','DEFAULT',NULL,'com.yami.shop.quartz.config.QuartzJob','0','1','0','0','<EFBFBD><EFBFBD>\0sr\0org.quartz.JobDataMap<61><70><EFBFBD><EFBFBD><E8BFA9>\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMap<61><08><><EFBFBD><EFBFBD>](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMap<13>.<2E>(v\n<>\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMap<07><><EFBFBD>`<60>\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~<EFBFBD>dꂑ<EFBFBD> \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0\ncouponTasksr\0java.util.Datehj<68>KYt\0\0xpw\0\0kdv\n<EFBFBD>xt\0\r0 0 0/1 * * ?sr\0java.lang.Long;<3B><>̏#<23>\0J\0valuexr\0java.lang.Number<65><72><EFBFBD> <0B><><EFBFBD>\0\0xp\0\0\0\0\0\0\0\rt\0 putOnCoupont\0\0t\0投放优惠券sr\0java.lang.Integer<><E2A0A4><EFBFBD>8\0I\0valuexq\0~\0\0\0\0\0x\0');
/*Table structure for table `qrtz_locks` */
@ -247,7 +250,7 @@ CREATE TABLE `qrtz_triggers` (
/*Data for the table `qrtz_triggers` */
insert into `qrtz_triggers`(`SCHED_NAME`,`TRIGGER_NAME`,`TRIGGER_GROUP`,`JOB_NAME`,`JOB_GROUP`,`DESCRIPTION`,`NEXT_FIRE_TIME`,`PREV_FIRE_TIME`,`PRIORITY`,`TRIGGER_STATE`,`TRIGGER_TYPE`,`START_TIME`,`END_TIME`,`CALENDAR_NAME`,`MISFIRE_INSTR`,`JOB_DATA`) values
('clusteredScheduler','TASK_10','DEFAULT','TASK_10','DEFAULT',NULL,1561359600000,1561356000000,5,'PAUSED','CRON',1560758441000,0,NULL,1,'¬í\0sr\0org.quartz.JobDataMapŸ°ƒè¿©°Ë\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMapèÃûÅ](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMapæ.­(v\nÎ\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMapÚÁÃ\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~ûdê« \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0\ncouponTaskpt\0\r0 0 0/1 * * ?sr\0java.lang.Long;ä<EFBFBD>Ì<EFBFBD>\0J\0valuexr\0java.lang.Number†¬• ”à‹\0\0xp\0\0\0\0\0\0\0\nt\0 changeCoupont\0\0q\0~\0sr\0java.lang.Integerâ ¤÷<C2A4>8\0I\0valuexq\0~\0\0\0\0\0x\0'),
('clusteredScheduler','TASK_10','DEFAULT','TASK_10','DEFAULT',NULL,1561359600000,1561356000000,5,'PAUSED','CRON',1560758441000,0,NULL,1,'<EFBFBD><EFBFBD>\0sr\0org.quartz.JobDataMap<61><70><EFBFBD><EFBFBD><E8BFA9>\0\0xr\0&org.quartz.utils.StringKeyDirtyFlagMap<61><08><><EFBFBD><EFBFBD>](\0Z\0allowsTransientDataxr\0org.quartz.utils.DirtyFlagMap<13>.<2E>(v\n<>\0Z\0dirtyL\0mapt\0Ljava/util/Map;xpsr\0java.util.HashMap<07><><EFBFBD>`<60>\0F\0\nloadFactorI\0 thresholdxp?@\0\0\0\0\0 w\0\0\0\0\0\0t\0\rJOB_PARAM_KEYsr\0&com.yami.shop.quartz.model.ScheduleJob~<EFBFBD>dꂑ<EFBFBD> \0L\0beanNamet\0Ljava/lang/String;L\0\ncreateTimet\0Ljava/util/Date;L\0cronExpressionq\0~\0 L\0jobIdt\0Ljava/lang/Long;L\0\nmethodNameq\0~\0 L\0paramsq\0~\0 L\0remarkq\0~\0 L\0statust\0Ljava/lang/Integer;xpt\0\ncouponTaskpt\0\r0 0 0/1 * * ?sr\0java.lang.Long;<EFBFBD><EFBFBD>̏#<23>\0J\0valuexr\0java.lang.Number<65><72><EFBFBD> <0B><><EFBFBD>\0\0xp\0\0\0\0\0\0\0\nt\0 changeCoupont\0\0q\0~\0sr\0java.lang.Integer<><E2A0A4><EFBFBD>8\0I\0valuexq\0~\0\0\0\0\0x\0'),
('clusteredScheduler','TASK_11','DEFAULT','TASK_11','DEFAULT',NULL,1561359600000,1561356000000,5,'PAUSED','CRON',1560758530000,0,NULL,1,''),
('clusteredScheduler','TASK_12','DEFAULT','TASK_12','DEFAULT',NULL,1561359600000,1561356000000,5,'PAUSED','CRON',1560758564000,0,NULL,1,''),
('clusteredScheduler','TASK_13','DEFAULT','TASK_13','DEFAULT',NULL,1561359600000,1561356000000,5,'PAUSED','CRON',1560758586000,0,NULL,1,'');

55
docker-compose.yml Normal file
View File

@ -0,0 +1,55 @@
version: '3'
services:
mall4j-mysql:
build:
context: ./
dockerfile: ./db/Dockerfile
environment:
MYSQL_ROOT_PASSWORD: root
restart: always
container_name: mall4j-mysql
image: mall4j-mysql
ports:
- 3306:3306
volumes:
- ./mall4j-mysql:/var/lib/mysql
command: --lower_case_table_names=1
mall4j-redis:
image: redis:5.0.4
restart: always
container_name: mall4j-redis
ports:
- 6379:6379
mall4j-admin:
build:
context: ./
dockerfile: ./yami-shop-admin/Dockerfile
restart: always
container_name: mall4j-admin
image: mall4j-admin
ports:
- 8085:8085
depends_on:
- mall4j-redis
- mall4j-mysql
links:
- "mall4j-redis"
- "mall4j-mysql"
mall4j-api:
build:
context: ./
dockerfile: ./yami-shop-api/Dockerfile
restart: always
container_name: mall4j-api
image: mall4j-api
ports:
- 8086:8086
depends_on:
- mall4j-redis
- mall4j-mysql
links:
- "mall4j-redis"
- "mall4j-mysql"

View File

@ -0,0 +1,15 @@
FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER opgames(opgames.cn@gmail.com)
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN mkdir -p /opt/projects/mall4j
WORKDIR /opt/projects/mall4j
ADD ./yami-shop-admin/target/yami-shop-admin-0.0.1-SNAPSHOT.jar ./
EXPOSE 8085
CMD java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms512m -Xmx512m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dspring.profiles.active=docker,quartz yami-shop-admin-0.0.1-SNAPSHOT.jar

View File

@ -0,0 +1,20 @@
server:
port: 8085
spring:
datasource:
url: jdbc:mysql://mall4j-mysql:3306/yami_shops?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 0
maximum-pool-size: 20
idle-timeout: 25000
auto-commit: true
connection-test-query: SELECT 1
redis:
redisson:
config: classpath:redisson-docker.yml
logging:
config: classpath:log4j2_prod.xml

View File

@ -15,6 +15,6 @@ spring:
connection-test-query: SELECT 1
redis:
redisson:
config: classpath:redisson.yml
config: classpath:redisson-docker.yml
logging:
config: classpath:log4j2_prod.xml

View File

@ -0,0 +1,31 @@
# 单节点设置
singleServerConfig:
address: redis://mall4j-redis:6379
database: 0
password: null
idleConnectionTimeout: 10000
pingTimeout: 1000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
reconnectionTimeout: 3000
failedAttempts: 3
clientName: null
# 发布和订阅连接的最小空闲连接数 默认1
subscriptionConnectionMinimumIdleSize: 1
# 发布和订阅连接池大小 默认50
subscriptionConnectionPoolSize: 10
# 单个连接最大订阅数量 默认5
subscriptionsPerConnection: 5
# 最小空闲连接数 默认32现在暂时不需要那么多的线程
connectionMinimumIdleSize: 4
# connectionPoolSize 默认64现在暂时不需要那么多的线程
connectionPoolSize: 20
# 这个线程池数量被所有RTopic对象监听器RRemoteService调用者和RExecutorService任务共同共享。
threads: 0
# 这个线程池数量是在一个Redisson实例内被其创建的所有分布式数据类型和服务以及底层客户端所一同共享的线程池里保存的线程数量。
nettyThreads: 0
codec:
class: com.yami.shop.common.serializer.redisson.FstCodec
transportMode: NIO

View File

@ -1,6 +1,6 @@
# 单节点设置
singleServerConfig:
address: redis://127.0.0.1:6379
address: redis://mall4j-redis:6379
database: 0
password: null
idleConnectionTimeout: 10000

15
yami-shop-api/Dockerfile Normal file
View File

@ -0,0 +1,15 @@
FROM anapsix/alpine-java:8_server-jre_unlimited
MAINTAINER opgames(opgames.cn@gmail.com)
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
RUN mkdir -p /opt/projects/mall4j
WORKDIR /opt/projects/mall4j
EXPOSE 8086
ADD ./yami-shop-api/target/yami-shop-api-0.0.1-SNAPSHOT.jar ./
CMD java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC -Dspring.profiles.active=docker yami-shop-api-0.0.1-SNAPSHOT.jar

View File

@ -0,0 +1,21 @@
server:
port: 8086
undertow:
worker-threads: 200
spring:
datasource:
url: jdbc:mysql://mall4j-mysql:3306/yami_shops?allowMultiQueries=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2B8&nullCatalogMeansCurrent=true
username: root
password: root
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.zaxxer.hikari.HikariDataSource
hikari:
minimum-idle: 0
maximum-pool-size: 20
connection-test-query: select 1
redis:
redisson:
config: classpath:redisson-docker.yml
logging:
config: classpath:log4j2_prod.xml

View File

@ -0,0 +1,31 @@
# 单节点设置
singleServerConfig:
address: redis://mall4j-redis:6379
database: 0
password: null
idleConnectionTimeout: 10000
pingTimeout: 1000
connectTimeout: 10000
timeout: 3000
retryAttempts: 3
retryInterval: 1500
reconnectionTimeout: 3000
failedAttempts: 3
clientName: null
# 发布和订阅连接的最小空闲连接数 默认1
subscriptionConnectionMinimumIdleSize: 1
# 发布和订阅连接池大小 默认50
subscriptionConnectionPoolSize: 10
# 单个连接最大订阅数量 默认5
subscriptionsPerConnection: 5
# 最小空闲连接数 默认32现在暂时不需要那么多的线程
connectionMinimumIdleSize: 4
# connectionPoolSize 默认64现在暂时不需要那么多的线程
connectionPoolSize: 20
# 这个线程池数量被所有RTopic对象监听器RRemoteService调用者和RExecutorService任务共同共享。
threads: 0
# 这个线程池数量是在一个Redisson实例内被其创建的所有分布式数据类型和服务以及底层客户端所一同共享的线程池里保存的线程数量。
nettyThreads: 0
codec:
class: com.yami.shop.common.serializer.redisson.FstCodec
transportMode: NIO