1. 预备
对于Tomcat Docker需要对webapps目录做下微调:
cd /usr/local/tomcat 这同时也是当前工作目录
预制的首页内容在webapps.dist/下,webapps/目录是空的。所以访问默认首页会找不到网页。
rmdir webapps
mv webapps.dist/ webapps
tomcat的首页目录就在/usr/local/tomcat/webapps/ROOT
2. redis的安装和使用
- 安装运行
docker pull redis:5
docker run -d -p 6379:6379 redis:5
- GUI连接工具
Redis Desktop Manager
3. Springboot的配置
- 第一步:引入依赖
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
</dependency>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
</dependency>
- 第二步:application.yml配置
server:
port: 8888
servlet:
context-path: /
tomcat:
uri-encoding: utf-8
spring:
session:
store-type: redis #指定redis实现spring session
timeout: PT1H # Session 过期时间, PT开头 ‘D’ – 天 ‘H’ – 小时 ‘M’ – 分钟 ‘S’ – 秒
redis:
flush-mode: on_save # Sessions 刷新模式 on_save http response为committed才提交 immediate 立即提交
namespace: beeworkshop # session 存储命名空间
redis:
host: 172.17.0.3
port: 6379
password:
lettuce:
pool:
max-active: 8 # 连接池最大连接数(使用负值表示没有限制)
max-wait: -1 # 连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle: 8 # 连接池中的最大空闲连接
min-idle: 0 # 连接池中的最小空闲连接
shutdown-timeout: 100 # 连接超时时间(毫秒)
- 第三步:启动类加
@EnableRedisHttpSession
- 第四步:核心代码编写
@PostMapping(value = "/login")
public ModelAndView login (HttpSession session, User user){
ModelAndView mav=new ModelAndView();
if("beeworkshop".equals(user.getUsername())&&"123456".equals(user.getPassword())){
session.setAttribute("currentUser",user);
mav.setViewName("main");
}else{
mav.addObject("errorInfo","用户名或者密码错误!");
mav.setViewName("login");
}
return mav;
}
我们直接通过HttpSession设置即可把session存到redis中去。
4. 通过Dockerfile将项目打包
FROM centos
MAINTAINER xxx<xxx@163.com>
LABEL name="Demo Dockerfile for Springboot&Sessions&Redis" \
build-date="20200212"
ADD server-jre-8u151-linux-x64.tar.gz /home/
ADD Demo-SNAPSHOT-1.jar /home/
ENV WORKPATH /home/
WORKDIR $WORKPATH
ENV JAVA_HOME /home/jdk1.8.0_151
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV PATH $PATH:$JAVA_HOME/bin
EXPOSE 8989
CMD java -jar /home/Demo-SNAPSHOT-1.jar