diff --git a/blog-admin/Dockerfile b/blog-admin/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..37d2e98d46267bd00740f9940ffc8f01cb9baa99
--- /dev/null
+++ b/blog-admin/Dockerfile
@@ -0,0 +1,20 @@
+# 环境版本
+FROM anapsix/alpine-java:8_server-jre_unlimited
+
+MAINTAINER yadong.zhang0415@gmail.com
+
+# JVM调优参数等额外参数
+ENV PARAMS ""
+
+ENV TZ=PRC
+
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+# 指定容器端口
+EXPOSE 8085
+
+# 添加本地 JAR 到容器内
+ADD target/blog-admin.jar app.jar
+
+# 容器启动后执行的命令
+ENTRYPOINT ["java", "-jar","app.jar" , "-Djava.security.egd=file:/dev/./urandom","$PARAMS"]
diff --git a/blog-admin/pom.xml b/blog-admin/pom.xml
index 8f17b8fb04b218d90d8eb85ead4c7df398d9bc62..a0d8898fb5eb7ee817c93eaea4bb711fe21ec903 100644
--- a/blog-admin/pom.xml
+++ b/blog-admin/pom.xml
@@ -19,6 +19,24 @@
com.zyd
blog-core
+
+
+ lombok
+ org.projectlombok
+
+
+ mybatis-spring-boot-starter
+ org.mybatis.spring.boot
+
+
+ log4j
+ log4j
+
+
+ kotlin-stdlib-common
+ org.jetbrains.kotlin
+
+
diff --git a/blog-admin/src/main/resources/application-dev.yml b/blog-admin/src/main/resources/application-dev.yml
index f9e73c8b211d4d38b4090789dd122bc7df1b4af1..5904016a2be3c7b8b35ef519c6e2854918f981b9 100644
--- a/blog-admin/src/main/resources/application-dev.yml
+++ b/blog-admin/src/main/resources/application-dev.yml
@@ -1,63 +1,24 @@
# Server settings
server:
tomcat:
- basedir: /var/tmp/website-blog-admin
+ basedir: /var/tmp/oneblog/blog-admin
# SPRING PROFILES
spring:
profiles:
include: [center-dev]
- # 指定默认MimeMessage的编码,默认为: UTF-8
- mail:
- default-encoding: UTF-8
- # 指定SMTP server使用的协议,默认为: smtp
- protocol: smtp
- # 指定SMTP server host.
- host: xxx
- port: 465
- # 指定SMTP server的用户名.
- username: xxx
- # 指定SMTP server登录密码:
- password: xxx
- # 指定是否在启动时测试邮件服务器连接,默认为false
- test-connection: false
- properties:
- mail.smtp.auth: true
- # 腾讯企业邮箱 下两个配置必须!!!
- mail.smtp.ssl.enable: true
- mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
- mail.smtp.socketFactory.port: 465
- mail.smtp.starttls.enable: true
- mail.smtp.starttls.required: true
- mail.smtp.connectiontimeout: 50000
- mail.smtp.timeout: 30000
- mail.smtp.writetimeout: 50000
- # Redis数据库索引(默认为0)
- redis:
- jedis:
- pool:
- # 连接池最大连接数(使用负值表示没有限制)
- max-active: 8
- # 连接池最大阻塞等待时间(使用负值表示没有限制)
- max-wait: -1ms
- # 连接池中的最大空闲连接
- max-idle: 8
- # 连接池中的最小空闲连接
- min-idle: 0
- # 连接超时时间(毫秒)
- timeout: 5000ms
- # 默认的数据过期时间,主要用于shiro权限管理
- expire: 2592000
# logging settings
logging:
- path: /var/tmp/website-blog-admin
+ config: classpath:logback-spring.xml
+ path: /var/tmp/oneblog/blog-admin
+
####################################自定义配置##########################################
app:
# 是否启用kaptcha验证码
- enableKaptcha: false
+ enableKaptcha: ${ONEBLOG_APP_ENABLE_KAPTCHA:false}
# 启用后,项目在启动时会打印数据库(Mysql和Redis)链接信息(包含密码)
# 代码请参考
- enabledConfigLog: true
+ enabledConfigLog: ${ONEBLOG_APP_ENABLE_CONFIGLOG:false}
# shiro配置项
shiro:
loginUrl: "/passport/login/"
diff --git a/blog-admin/src/main/resources/application-test.yml b/blog-admin/src/main/resources/application-test.yml
deleted file mode 100644
index 1c72811c1679ace4319e3db9a9115bcd6de7dcfe..0000000000000000000000000000000000000000
--- a/blog-admin/src/main/resources/application-test.yml
+++ /dev/null
@@ -1,65 +0,0 @@
-# Server settings
-server:
- tomcat:
- basedir: /var/tmp/website-blog-admin
-# SPRING PROFILES
-spring:
- profiles:
- include: [center-test]
- # 指定默认MimeMessage的编码,默认为: UTF-8
- mail:
- default-encoding: UTF-8
- # 指定SMTP server使用的协议,默认为: smtp
- protocol: smtp
- # 指定SMTP server host.
- host: xxx
- port: 465
- # 指定SMTP server的用户名.
- username: xxx
- # 指定SMTP server登录密码:
- password: xxx
- # 指定是否在启动时测试邮件服务器连接,默认为false
- test-connection: false
- properties:
- mail.smtp.auth: true
- # 腾讯企业邮箱 下两个配置必须!!!
- mail.smtp.ssl.enable: true
- mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
- mail.smtp.socketFactory.port: 465
- mail.smtp.starttls.enable: true
- mail.smtp.starttls.required: true
- mail.smtp.connectiontimeout: 50000
- mail.smtp.timeout: 30000
- mail.smtp.writetimeout: 50000
- # Redis数据库索引(默认为0)
- redis:
- jedis:
- pool:
- # 连接池最大连接数(使用负值表示没有限制)
- max-active: 8
- # 连接池最大阻塞等待时间(使用负值表示没有限制)
- max-wait: -1ms
- # 连接池中的最大空闲连接
- max-idle: 8
- # 连接池中的最小空闲连接
- min-idle: 0
- # 连接超时时间(毫秒)
- timeout: 5000ms
- # 默认的数据过期时间,主要用于shiro权限管理
- expire: 2592000
-# logging settings
-logging:
- path: /var/tmp/website-blog-admin
-####################################自定义配置##########################################
-app:
- # 是否启用kaptcha验证码
- enableKaptcha: false
- # 启用后,项目在启动时会打印数据库(Mysql和Redis)链接信息(包含密码)
- # 代码请参考
- enabledConfigLog: false
- # shiro配置项
- shiro:
- loginUrl: "/passport/login/"
- successUrl: "/"
- unauthorizedUrl: "/error/403"
-####################################自定义配置##########################################
diff --git a/blog-admin/src/main/resources/logback-spring.xml b/blog-admin/src/main/resources/logback-spring.xml
index 2fc10256ea250feb998a0746c714785574d3c1f2..f57482b4751937e3eb8620ebb0ad348c06c93be5 100644
--- a/blog-admin/src/main/resources/logback-spring.xml
+++ b/blog-admin/src/main/resources/logback-spring.xml
@@ -26,15 +26,12 @@
-
-
-
+
+
+
-
-
-
-
+
@@ -42,15 +39,10 @@
-
-
-
-
-
-
\ No newline at end of file
+
diff --git a/blog-core/src/main/java/com/zyd/blog/util/IpUtil.java b/blog-core/src/main/java/com/zyd/blog/util/IpUtil.java
index 0d7d4cb5652f90c006b486d8a87d6848a334b08a..2fc6b79b55b7ea08b648f44aea6ef54eca51cc64 100644
--- a/blog-core/src/main/java/com/zyd/blog/util/IpUtil.java
+++ b/blog-core/src/main/java/com/zyd/blog/util/IpUtil.java
@@ -1,5 +1,6 @@
package com.zyd.blog.util;
+import cn.hutool.core.util.ReUtil;
import org.springframework.util.StringUtils;
import javax.servlet.http.HttpServletRequest;
@@ -15,27 +16,56 @@ import javax.servlet.http.HttpServletRequest;
*/
public class IpUtil {
+ private static final String IPV4_IPV6_PATTERN = "([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3})|(((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])(.(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9]?[0-9])){3}))|:)))(%.+)?)";
+
/**
- * 获取真实IP
+ * 获取当前请求者的ip
*
- * @param request
- * @return
+ * @return {String}
*/
public static String getRealIp(HttpServletRequest request) {
- String ip = request.getHeader("x-forwarded-for");
- return checkIp(ip) ? ip : (
- checkIp(ip = request.getHeader("Proxy-Client-IP")) ? ip : (
- checkIp(ip = request.getHeader("WL-Proxy-Client-IP")) ? ip :
- request.getRemoteAddr()));
+ if (null == request) {
+ return "";
+ }
+ String[] headers = {"X-Forwarded-For", "X-Real-IP", "Proxy-Client-IP", "WL-Proxy-Client-IP", "HTTP_CLIENT_IP", "HTTP_X_FORWARDED_FOR"};
+ String ip;
+ for (String header : headers) {
+ ip = request.getHeader(header);
+ if (isValidIp(ip)) {
+ return getMultistageReverseProxyIp(ip);
+ }
+ }
+ ip = request.getRemoteAddr();
+ return getMultistageReverseProxyIp(ip);
+ }
+
+ /**
+ * 从多级反向代理中获得第一个非unknown IP地址
+ *
+ * @param ip 获得的IP地址
+ * @return 第一个非unknown IP地址
+ */
+ private static String getMultistageReverseProxyIp(String ip) {
+ // 多级反向代理检测
+ if (ip != null && ip.indexOf(",") > 0) {
+ final String[] ips = ip.trim().split(",");
+ for (String subIp : ips) {
+ if (isValidIp(subIp)) {
+ ip = subIp;
+ break;
+ }
+ }
+ }
+ return ReUtil.getGroup0(IPV4_IPV6_PATTERN, ip);
}
/**
* 校验IP
*
- * @param ip
- * @return
+ * @param ip 获得的IP地址
+ * @return 是否为未知的ip
*/
- private static boolean checkIp(String ip) {
+ private static boolean isValidIp(String ip) {
return !StringUtils.isEmpty(ip) && !"unknown".equalsIgnoreCase(ip) && RegexUtils.isIp(ip);
}
diff --git a/blog-core/src/main/resources/config/application-center-dev.yml b/blog-core/src/main/resources/config/application-center-dev.yml
index d21702be4adadbc6a5dbef908aa994fe0942c1dc..fdf026153fe0eca9948d1254ce8b7fd68998dc3b 100644
--- a/blog-core/src/main/resources/config/application-center-dev.yml
+++ b/blog-core/src/main/resources/config/application-center-dev.yml
@@ -7,23 +7,20 @@ spring:
connection-init-sqls: set names utf8mb4
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
- url: jdbc:mysql://localhost:3306/dblog?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true
- username: root
- password: root
+ url: jdbc:mysql://${ONEBLOG_DATASOURCE_HOST:127.0.0.1}:${ONEBLOG_DATASOURCE_PORT:3306}/${ONEBLOG_DATASOURCE_DATABASE_NAME:dblog}?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true
+ username: ${ONEBLOG_DATASOURCE_USERNAME:root}
+ password: ${ONEBLOG_DATASOURCE_PASSWORD:root}
+
####### Redis Config #######
redis:
- database: 5
+ database: ${ONEBLOG_REDIS_DATABASE_INDEX:1}
# Redis服务器地址
- host: 127.0.0.1
+ host: ${ONEBLOG_REDIS_HOST:127.0.0.1}
# Redis服务器连接端口
- port: 6379
+ port: ${ONEBLOG_REDIS_PORT:6379}
# Redis服务器连接密码(默认为空)
- password: qwe!@#123
+ password: ${ONEBLOG_REDIS_PASSWORD:123456ZHYD}
####### redis缓存服务配置 #######
session:
store-type: redis
-
- ####### 自定义配置 #######
-
- ####### 自定义配置 #######
diff --git a/blog-core/src/main/resources/config/application-center-test.yml b/blog-core/src/main/resources/config/application-center-test.yml
deleted file mode 100644
index d21702be4adadbc6a5dbef908aa994fe0942c1dc..0000000000000000000000000000000000000000
--- a/blog-core/src/main/resources/config/application-center-test.yml
+++ /dev/null
@@ -1,29 +0,0 @@
-spring:
- profiles:
- include: [center]
- ####### database Config #######
- datasource:
- druid:
- connection-init-sqls: set names utf8mb4
- driver-class-name: com.mysql.jdbc.Driver
- type: com.alibaba.druid.pool.DruidDataSource
- url: jdbc:mysql://localhost:3306/dblog?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&allowMultiQueries=true&useSSL=false&allowPublicKeyRetrieval=true
- username: root
- password: root
- ####### Redis Config #######
- redis:
- database: 5
- # Redis服务器地址
- host: 127.0.0.1
- # Redis服务器连接端口
- port: 6379
- # Redis服务器连接密码(默认为空)
- password: qwe!@#123
-
- ####### redis缓存服务配置 #######
- session:
- store-type: redis
-
- ####### 自定义配置 #######
-
- ####### 自定义配置 #######
diff --git a/blog-core/src/main/resources/config/application-center.yml b/blog-core/src/main/resources/config/application-center.yml
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..bda0d90bc9265651cf2db7c46b3b73f87c660a8e 100644
--- a/blog-core/src/main/resources/config/application-center.yml
+++ b/blog-core/src/main/resources/config/application-center.yml
@@ -0,0 +1,42 @@
+spring:
+ # 指定默认MimeMessage的编码,默认为: UTF-8
+ mail:
+ default-encoding: UTF-8
+ # 指定SMTP server使用的协议,默认为: smtp
+ protocol: smtp
+ # 指定SMTP server host.
+ host: ${ONEBLOG_MAIL_HOST}
+ port: ${ONEBLOG_MAIL_PORT:465}
+ # 指定SMTP server的用户名.
+ username: ${ONEBLOG_MAIL_USERNAME}
+ # 指定SMTP server登录密码:
+ password: ${ONEBLOG_MAIL_PASSWORD}
+ # 指定是否在启动时测试邮件服务器连接,默认为false
+ test-connection: false
+ properties:
+ mail.smtp.auth: true
+ # 腾讯企业邮箱 下两个配置必须!!!
+ mail.smtp.ssl.enable: true
+ mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
+ mail.smtp.socketFactory.port: 465
+ mail.smtp.starttls.enable: true
+ mail.smtp.starttls.required: true
+ mail.smtp.connectiontimeout: 50000
+ mail.smtp.timeout: 30000
+ mail.smtp.writetimeout: 50000
+ # Redis数据库索引(默认为0)
+ redis:
+ jedis:
+ pool:
+ # 连接池最大连接数(使用负值表示没有限制)
+ max-active: 8
+ # 连接池最大阻塞等待时间(使用负值表示没有限制)
+ max-wait: -1ms
+ # 连接池中的最大空闲连接
+ max-idle: 8
+ # 连接池中的最小空闲连接
+ min-idle: 0
+ # 连接超时时间(毫秒)
+ timeout: 5000ms
+ # 默认的数据过期时间,主要用于shiro权限管理
+ expire: 2592000
diff --git a/blog-web/Dockerfile b/blog-web/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..0f107487602d254ae8846d32085a20b6ba1e2017
--- /dev/null
+++ b/blog-web/Dockerfile
@@ -0,0 +1,20 @@
+# 环境版本
+FROM anapsix/alpine-java:8_server-jre_unlimited
+
+MAINTAINER yadong.zhang0415@gmail.com
+
+# JVM调优参数等额外参数
+ENV PARAMS ""
+
+ENV TZ=PRC
+
+RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+# 指定容器端口
+EXPOSE 8085
+
+# 添加本地 JAR 到容器内
+ADD target/blog-web.jar app.jar
+
+# 容器启动后执行的命令
+ENTRYPOINT ["java", "-jar","app.jar" , "-Djava.security.egd=file:/dev/./urandom","$PARAMS"]
diff --git a/blog-web/src/main/resources/application-dev.yml b/blog-web/src/main/resources/application-dev.yml
index ff56a37036eae9396582424e6d0fb315ff2a7802..23b0b6bc52410f496fe7f2243da1a8eae79e1ff3 100644
--- a/blog-web/src/main/resources/application-dev.yml
+++ b/blog-web/src/main/resources/application-dev.yml
@@ -1,56 +1,16 @@
# Server settings
server:
tomcat:
- basedir: /var/tmp/website-blog-web
+ basedir: /var/tmp/oneblog/blog-web
# SPRING PROFILES
spring:
profiles:
include: [center-dev]
- # 指定默认MimeMessage的编码,默认为: UTF-8
- mail:
- default-encoding: UTF-8
- # 指定SMTP server使用的协议,默认为: smtp
- protocol: smtp
- # 指定SMTP server host.
- host: xxx
- port: 465
- # 指定SMTP server的用户名.
- username: xxx
- # 指定SMTP server登录密码:
- password: xxx
- # 指定是否在启动时测试邮件服务器连接,默认为false
- test-connection: false
- properties:
- mail.smtp.auth: true
- # 腾讯企业邮箱 下两个配置必须!!!
- mail.smtp.ssl.enable: true
- mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
- mail.smtp.socketFactory.port: 465
- mail.smtp.starttls.enable: true
- mail.smtp.starttls.required: true
- mail.smtp.connectiontimeout: 50000
- mail.smtp.timeout: 30000
- mail.smtp.writetimeout: 50000
- # Redis数据库索引(默认为0)
- redis:
- jedis:
- pool:
- # 连接池最大连接数(使用负值表示没有限制)
- max-active: 8
- # 连接池最大阻塞等待时间(使用负值表示没有限制)
- max-wait: -1ms
- # 连接池中的最大空闲连接
- max-idle: 8
- # 连接池中的最小空闲连接
- min-idle: 0
- # 连接超时时间(毫秒)
- timeout: 5000ms
- # 默认的数据过期时间,主要用于shiro权限管理
- expire: 2592000
# logging settings
logging:
- path: /var/tmp/website-blog-web
+ config: classpath:logback-spring.xml
+ path: /var/tmp/oneblog/blog-web
# braum过滤器,用于过滤恶意请求
braum:
@@ -63,8 +23,8 @@ braum:
####################################自定义配置##########################################
app:
# 是否启用kaptcha验证码
- enableKaptcha: false
+ enableKaptcha: ${ONEBLOG_APP_ENABLE_KAPTCHA:false}
# 启用后,项目在启动时会打印数据库(Mysql和Redis)链接信息(包含密码)
# 代码请参考
- enabledConfigLog: true
+ enabledConfigLog: ${ONEBLOG_APP_ENABLE_CONFIGLOG:false}
####################################自定义配置##########################################
diff --git a/blog-web/src/main/resources/application-test.yml b/blog-web/src/main/resources/application-test.yml
deleted file mode 100644
index f657140ab2e905b6ef161edb97dabcdaf58924db..0000000000000000000000000000000000000000
--- a/blog-web/src/main/resources/application-test.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-# Server settings
-server:
- tomcat:
- basedir: /var/tmp/website-blog-web
-# SPRING PROFILES
-spring:
- profiles:
- include: [center-test]
- active:
- # 指定默认MimeMessage的编码,默认为: UTF-8
- mail:
- default-encoding: UTF-8
- # 指定SMTP server使用的协议,默认为: smtp
- protocol: smtp
- # 指定SMTP server host.
- host: xxx
- port: 465
- # 指定SMTP server的用户名.
- username: xxx
- # 指定SMTP server登录密码:
- password: xxx
- # 指定是否在启动时测试邮件服务器连接,默认为false
- test-connection: false
- properties:
- mail.smtp.auth: true
- # 腾讯企业邮箱 下两个配置必须!!!
- mail.smtp.ssl.enable: true
- mail.smtp.socketFactory.class: javax.net.ssl.SSLSocketFactory
- mail.smtp.socketFactory.port: 465
- mail.smtp.starttls.enable: true
- mail.smtp.starttls.required: true
- mail.smtp.connectiontimeout: 50000
- mail.smtp.timeout: 30000
- mail.smtp.writetimeout: 50000
- # Redis数据库索引(默认为0)
- redis:
- jedis:
- pool:
- # 连接池最大连接数(使用负值表示没有限制)
- max-active: 8
- # 连接池最大阻塞等待时间(使用负值表示没有限制)
- max-wait: -1ms
- # 连接池中的最大空闲连接
- max-idle: 8
- # 连接池中的最小空闲连接
- min-idle: 0
- # 连接超时时间(毫秒)
- timeout: 5000ms
- # 默认的数据过期时间,主要用于shiro权限管理
- expire: 2592000
-
-# logging settings
-logging:
- path: /var/tmp/website-blog-web
-
-# braum过滤器,用于过滤恶意请求
-braum:
- limit:
- access:
- type: redis
- threshold: 15
- interval: 5000
-
-####################################自定义配置##########################################
-app:
- # 是否启用kaptcha验证码
- enableKaptcha: false
- # 启用后,项目在启动时会打印数据库(Mysql和Redis)链接信息(包含密码)
- # 代码请参考
- enabledConfigLog: false
-####################################自定义配置##########################################
diff --git a/docs/db/dblog.sql b/docs/db/dblog.sql
index 0f562f0c8da0e03e90cae9a9e4a080c5afd70ab6..fd0d55fafc0f29fe5825f3b06a067ecdadadd648 100644
--- a/docs/db/dblog.sql
+++ b/docs/db/dblog.sql
@@ -14,6 +14,9 @@
Date: 04/01/2019 15:45:01
*/
+CREATE database if NOT EXISTS `dblog` default character set utf8mb4 collate utf8mb4_unicode_ci;
+use `dblog`;
+
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
diff --git a/docs/docker/.env b/docs/docker/.env
new file mode 100644
index 0000000000000000000000000000000000000000..4f02364282fc47614b975bb36cdf4b8f17b7fe15
--- /dev/null
+++ b/docs/docker/.env
@@ -0,0 +1,31 @@
+MYSQL_ROOT_HOST=%
+
+# 默认的工作目录, 默认是 windows 盘符,如果运行到其他操作系统中时,注意修改该配置
+ONEBLOG_APP_DIR=D://var/.oneblog
+
+# redis 配置
+ONEBLOG_REDIS_DATABASE_INDEX=1
+ONEBLOG_REDIS_HOST=oneblog-redis
+ONEBLOG_REDIS_PORT=6379
+# 建议修改为复制密码
+ONEBLOG_REDIS_PASSWORD=oneblog123456
+
+# mysql 配置
+ONEBLOG_DATASOURCE_HOST=oneblog-mysql
+ONEBLOG_DATASOURCE_PORT=3306
+ONEBLOG_DATASOURCE_DATABASE_NAME=dblog
+ONEBLOG_DATASOURCE_USERNAME=root
+# 建议修改为复制密码
+ONEBLOG_DATASOURCE_PASSWORD=root
+
+# email 配置
+ONEBLOG_MAIL_HOST=
+ONEBLOG_MAIL_PORT=465
+ONEBLOG_MAIL_USERNAME=
+ONEBLOG_MAIL_PASSWORD=
+
+# oneblog 自定义配置
+# 是否启用kaptcha验证码
+ONEBLOG_APP_ENABLE_KAPTCHA=false
+# 启用后,项目在启动时会打印数据库(Mysql和Redis)链接信息(包含密码)
+ONEBLOG_APP_ENABLE_CONFIGLOG=true
diff --git a/docs/docker/docker-compose.yml b/docs/docker/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..d4c9ef495e313bf45df65cfe382c88549a622881
--- /dev/null
+++ b/docs/docker/docker-compose.yml
@@ -0,0 +1,121 @@
+version: '3.3'
+services:
+ # MySQL
+ oneblog-mysql:
+ image: oneblog/mysql
+ build: ./mysql
+ environment:
+ MYSQL_ROOT_PASSWORD: ${ONEBLOG_DATASOURCE_PASSWORD}
+ TZ: Asia/Shanghai
+ restart: always
+ container_name: oneblog-mysql
+ hostname: oneblog-mysql
+ volumes:
+ - ${ONEBLOG_APP_DIR}/mysql:/var/lib/mysql
+ ports:
+ - 33066:3306
+ command: --default-authentication-plugin=mysql_native_password --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
+ healthcheck:
+ test: [ "CMD", "mysqladmin" ,"ping", "-h", "localhost" ]
+ timeout: 20s
+ retries: 10
+ networks:
+ - oneblog
+
+ # Redis
+ oneblog-redis:
+ image: redis
+ restart: always
+ container_name: oneblog-redis
+ hostname: oneblog-redis
+ command: redis-server --appendonly yes --requirepass ${ONEBLOG_REDIS_PASSWORD} --bind oneblog-redis
+ ports:
+ - 63799:6379
+ volumes:
+ - ${ONEBLOG_APP_DIR}/redis/:/data/
+ healthcheck:
+ test: [ "CMD", "redis-cli" ]
+ timeout: 20s
+ retries: 10
+ networks:
+ - oneblog
+
+ # admin 服务
+ oneblog-admin:
+ image: oneblog/blog-admin
+ build: ../../blog-admin
+ restart: always
+ container_name: oneblog-admin
+ hostname: oneblog-admin
+ environment:
+ ONEBLOG_REDIS_DATABASE_INDEX:
+ ONEBLOG_REDIS_HOST:
+ ONEBLOG_REDIS_PORT:
+ ONEBLOG_REDIS_PASSWORD:
+ ONEBLOG_DATASOURCE_HOST:
+ ONEBLOG_DATASOURCE_PORT:
+ ONEBLOG_DATASOURCE_DATABASE_NAME:
+ ONEBLOG_DATASOURCE_USERNAME:
+ ONEBLOG_DATASOURCE_PASSWORD:
+ ONEBLOG_MAIL_HOST:
+ ONEBLOG_MAIL_PORT:
+ ONEBLOG_MAIL_USERNAME:
+ ONEBLOG_MAIL_PASSWORD:
+ ONEBLOG_APP_ENABLE_KAPTCHA:
+ ONEBLOG_APP_ENABLE_CONFIGLOG:
+ volumes:
+ - ${ONEBLOG_APP_DIR}:/var/tmp/oneblog
+ depends_on:
+ oneblog-redis:
+ condition: service_healthy
+ oneblog-mysql:
+ condition: service_healthy
+ links:
+ - oneblog-redis
+ - oneblog-mysql
+ ports:
+ - 8085:8085
+ networks:
+ - oneblog
+
+ # admin 服务
+ oneblog-web:
+ image: oneblog/blog-web
+ build: ../../blog-web
+ restart: always
+ container_name: oneblog-web
+ hostname: oneblog-web
+ environment:
+ ONEBLOG_REDIS_DATABASE_INDEX:
+ ONEBLOG_REDIS_HOST:
+ ONEBLOG_REDIS_PORT:
+ ONEBLOG_REDIS_PASSWORD:
+ ONEBLOG_DATASOURCE_HOST:
+ ONEBLOG_DATASOURCE_PORT:
+ ONEBLOG_DATASOURCE_DATABASE_NAME:
+ ONEBLOG_DATASOURCE_USERNAME:
+ ONEBLOG_DATASOURCE_PASSWORD:
+ ONEBLOG_MAIL_HOST:
+ ONEBLOG_MAIL_PORT:
+ ONEBLOG_MAIL_USERNAME:
+ ONEBLOG_MAIL_PASSWORD:
+ ONEBLOG_APP_ENABLE_KAPTCHA:
+ ONEBLOG_APP_ENABLE_CONFIGLOG:
+ volumes:
+ - ${ONEBLOG_APP_DIR}:/var/tmp/oneblog
+ depends_on:
+ oneblog-redis:
+ condition: service_healthy
+ oneblog-mysql:
+ condition: service_healthy
+ links:
+ - oneblog-redis
+ - oneblog-mysql
+ ports:
+ - 8443:8443
+ networks:
+ - oneblog
+
+networks:
+ oneblog:
+ driver: bridge
diff --git a/docs/docker/mysql/Dockerfile b/docs/docker/mysql/Dockerfile
new file mode 100644
index 0000000000000000000000000000000000000000..aef10415453474679f2ca2e9a899e1b107df8f4e
--- /dev/null
+++ b/docs/docker/mysql/Dockerfile
@@ -0,0 +1,14 @@
+# FROM mysql:8.0.20
+FROM mysql:5.7
+
+MAINTAINER yadong.zhang0415@gmail.com
+
+ENV TZ=Asia/Shanghai
+
+ADD ./config/mysqld.cnf /etc/mysql/mysql.conf.d/mysqld.cnf
+
+RUN ln -sf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
+
+COPY ../../db/dblog.sql /docker-entrypoint-initdb.d
+
+COPY ../../db/init_data.sql /docker-entrypoint-initdb.d
diff --git a/docs/docker/mysql/config/mysqld.cnf b/docs/docker/mysql/config/mysqld.cnf
new file mode 100644
index 0000000000000000000000000000000000000000..b1293aa1cc6b485eb9343b4ce4497d35b6e2414c
--- /dev/null
+++ b/docs/docker/mysql/config/mysqld.cnf
@@ -0,0 +1,110 @@
+[client]
+port=3306
+default-character-set=utf8mb4
+socket = /var/run/mysqld/mysqld.sock
+[mysql]
+no-auto-rehash
+auto-rehash
+default-character-set=utf8mb4
+[mysqld]
+user=mysql
+pid-file=/var/run/mysqld/mysqld.pid
+socket=/var/run/mysqld/mysqld.sock
+datadir=/var/lib/mysql
+default-storage-engine=INNODB
+character-set-server=utf8mb4
+collation-server=utf8mb4_general_ci
+default-time-zone='+8:00'
+innodb_rollback_on_timeout='ON'
+max_connections=500
+innodb_lock_wait_timeout=500
+sql_mode="NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"
+transaction_isolation=READ-COMMITTED
+auto_increment_offset = 1
+connect_timeout = 20
+wait_timeout=86400
+interactive_timeout=86400
+interactive_timeout = 7200
+log_bin_trust_function_creators = 1
+wait_timeout = 7200
+sort_buffer_size = 32M
+join_buffer_size = 128M
+max_allowed_packet = 1024M
+tmp_table_size = 2097152
+explicit_defaults_for_timestamp = 1
+read_buffer_size = 16M
+read_rnd_buffer_size = 32M
+query_cache_type = 1
+query_cache_size = 2M
+table_open_cache = 1500
+table_definition_cache = 1000
+thread_cache_size = 768
+back_log = 3000
+open_files_limit = 65536
+skip-name-resolve
+########log settings########
+log-output=FILE
+general_log = ON
+general_log_file=/var/lib/mysql/general.log
+slow_query_log = ON
+slow_query_log_file=/var/lib/mysql/slowquery.log
+long_query_time=10
+#log-error=/var/lib/mysql/error.log
+log_queries_not_using_indexes = OFF
+log_throttle_queries_not_using_indexes = 0
+#expire_logs_days = 120
+min_examined_row_limit = 100
+########innodb settings########
+innodb_io_capacity = 4000
+innodb_io_capacity_max = 8000
+innodb_buffer_pool_size = 6144M
+innodb_file_per_table = on
+innodb_buffer_pool_instances = 20
+innodb_buffer_pool_load_at_startup = 1
+innodb_buffer_pool_dump_at_shutdown = 1
+innodb_log_file_size = 300M
+innodb_log_files_in_group = 2
+innodb_log_buffer_size = 16M
+innodb_undo_logs = 128
+#innodb_undo_tablespaces = 3
+#innodb_undo_log_truncate = 1
+#innodb_max_undo_log_size = 2G
+innodb_flush_method = O_DIRECT
+innodb_flush_neighbors = 1
+innodb_purge_threads = 4
+innodb_large_prefix = 1
+innodb_thread_concurrency = 64
+innodb_print_all_deadlocks = 1
+innodb_strict_mode = 1
+innodb_sort_buffer_size = 64M
+innodb_flush_log_at_trx_commit=1
+innodb_autoextend_increment=64
+innodb_concurrency_tickets=5000
+innodb_old_blocks_time=1000
+innodb_open_files=65536
+innodb_stats_on_metadata=0
+innodb_file_per_table=1
+innodb_checksum_algorithm=0
+#innodb_data_file_path=ibdata1:60M;ibdata2:60M;autoextend:max:1G
+innodb_data_file_path = ibdata1:12M:autoextend
+#innodb_temp_data_file_path = ibtmp1:500M:autoextend:max:20G
+#innodb_buffer_pool_dump_pct = 40
+#innodb_page_cleaners = 4
+#innodb_purge_rseg_truncate_frequency = 128
+binlog_gtid_simple_recovery=1
+#log_timestamps=system
+##############
+delayed_insert_limit = 100
+delayed_insert_timeout = 300
+delayed_queue_size = 1000
+delay_key_write = ON
+disconnect_on_expired_password = ON
+div_precision_increment = 4
+end_markers_in_json = OFF
+eq_range_index_dive_limit = 10
+innodb_adaptive_flushing = ON
+innodb_adaptive_hash_index = ON
+innodb_adaptive_max_sleep_delay = 150000
+#innodb_additional_mem_pool_size = 2097152
+innodb_autoextend_increment = 64
+innodb_autoinc_lock_mode = 1
diff --git a/pom.xml b/pom.xml
index 60c923c4acccaf1d46b3b02be5fcdbf0d3c3d9b9..5b28025a82b53f8e79c0599b6696ed1ffe1ba626 100644
--- a/pom.xml
+++ b/pom.xml
@@ -116,17 +116,6 @@
- ${project.artifactId}-${project.version}
-
-
-
-
- test
-
- test
-
-
-
${project.artifactId}