使用docker-compose的Spring会话演示

之前已经写过一个令人振奋的新项目,称为Spring-session ,它为基于Java的Web应用程序提供了一种外部化用户会话的干净方法。

我设法使用docker-compose为spring-session进行了良好的演示设置,这展示了该项目的优势,我想在这里写一下。 简而言之,这是运行docker-compose将会弹出的设置:




使用docker-compose的Spring会话演示

启动了使用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: nginx
  volumes:
    - nginx:/etc/nginx:ro
  links:
    - shop1
    - shop2
  ports:
   - "80:80"

shop1:
  build: .
  hostname: shop1
  links:
    - redis
  ports:
    - "8081:8080"

shop2:
  build: .
  hostname: shop2
  links:
    - redis
  ports:
    - "8082:8080"

redis:
  image: redis
  hostname: redis
  ports:
    - "6379:6379"

该应用程序本身利用用户会话来维护“购物车”的状态,因为此应用程序配置为使用spring-session,因此该会话将保留在redis数据库中。 nginx背后有两个应用程序实例,其中一个服务器最终将获得请求,但是外部会话状态将继续无缝地工作,而不管应用程序实例如何处理请求。

以下是购物车的视图:

使用docker-compose的Spring会话演示

会话ID和处理请求的实例的详细信息显示在页面底部。

从下面的屏幕快照中可以看出,即使其他实例处理了请求,会话状态仍将保持干净。

使用docker-compose的Spring会话演示

翻译自: https://www.javacodegeeks.com/2015/04/spring-session-demonstration-using-docker-compose.html