我之前已经写过一个令人振奋的新项目,称为Spring-session ,它为基于Java的Web应用程序提供了一种外部化用户会话的干净方法。
我设法使用docker-compose为spring-session进行了良好的演示设置,这展示了该项目的优势,我想在这里写一下。 简而言之,这是运行docker-compose将会弹出的设置:
启动了使用Spring会话的应用程序的两个实例,这些实例使用相同的redis容器存储会话状态,并依次由nginx服务器进行管理。
调出该拓扑所需要做的就是:
- 克隆我的仓库在这里
- 安装docker-compose
- 生成应用程序–“ mvn软件包-DskipTests” –跳过测试,因为测试取决于本地redis服务器,该服务器可能会或可能不会可用
- 在克隆的文件夹中运行“ docker-compose up”
就是这样,如果一切都经过了干净的设置,nginx应该可以在http:// docker-ip url上获得–在我的mac中,通常为http://192.168.59.103
详细说明:
Docker-compose是一种工具,可用于将一组Docker容器放到一个一致的堆栈中。 可以声明性地定义堆栈,以下是此处使用的示例堆栈:
nginx:image: nginxvolumes:- nginx:/etc/nginx:rolinks:- shop1- shop2ports:- "80:80"shop1:build: .hostname: shop1links:- redisports:- "8081:8080"shop2:build: .hostname: shop2links:- redisports:- "8082:8080"redis:image: redishostname: redisports:- "6379:6379"
该应用程序本身利用用户会话来维护“购物车”的状态,因为此应用程序配置为使用spring-session,因此该会话将保留在redis数据库中。 nginx背后有两个应用程序实例,其中一个服务器最终将获得请求,但是外部会话状态将继续无缝地工作,而不管应用程序实例如何处理请求。
以下是购物车的视图:
会话ID和处理请求的实例的详细信息显示在页面底部。
从下面的屏幕快照中可以看出,即使其他实例处理了请求,会话状态仍将保持干净。
翻译自: https://www.javacodegeeks.com/2015/04/spring-session-demonstration-using-docker-compose.html