Ранее я писал о захватывающем новом проекте под названием Spring-session, который обеспечивает чистый способ вывода пользовательских сеансов для веб-приложений на основе Java.
Мне удалось получить хорошую демонстрационную установку для весенней сессии с использованием docker-compose, которая демонстрирует сильные стороны этого проекта, и я хотел написать об этом здесь. Короче говоря, это настройка, которую запускает docker-compose:
Два экземпляра приложения, использующего Spring-сеанс, запускаются, эти экземпляры используют один и тот же контейнер redis для хранения состояния сеанса и, в свою очередь, запускаются сервером nginx .
Все, что нужно сделать, чтобы поднять эту топологию, это:
- клон моего репо доступен здесь
- установить docker-compose
- создать приложение — «mvn package -DskipTests» — пропустить тесты, так как тесты зависят от локального сервера redis, который может быть или не быть доступным
- запустить «docker-compose up» в клонированной папке
То есть, если все было настроено чисто, nginx должен быть доступен по адресу http: // docker-ip url — в моем mac это обычно http://192.168.59.103
Детали и демонстрация:
Docker-compose — это инструмент, позволяющий собрать набор Docker- контейнеров в единый стек. Стек может быть определен декларативно, и здесь используется пример стека:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
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" |
Это приложение само использует пользовательский сеанс для поддержания состояния «корзины покупок», поскольку это приложение настроено на использование весеннего сеанса, и сеанс будет поддерживаться в базе данных redis. За nginx есть два экземпляра приложения, и один из серверов в конечном итоге получит запрос, но внешнее состояние сеанса будет продолжать работать безотказно независимо от того, обрабатывает ли экземпляр приложения запрос.
Ниже приведен вид корзины покупок:
Идентификатор сеанса и детали экземпляра, обрабатывающего запрос, напечатаны внизу страницы.
Как видно на следующем снимке экрана, даже если другой экземпляр обрабатывает запрос, состояние сеанса продолжает поддерживаться без ошибок.
Ссылка: | Весенняя сессия демонстрации с использованием docker-compose от нашего партнера JCG Биджу Кунджуммен в блоге all and sundry. |