- Spring Authorization Server
- Spring OAuth 2.0 Resource Server
- Spring data JPA
- Spring Web
- Spring gRPC by https://github.com/yidongnan
- Docker
- Postgres
- React
- Thymeleaf
- Jakarta Bean Validation
Рекомендуемые материалы к просмотру:
- Implementing an OAuth 2 authorization server with Spring Security - the new way! by Laurentiu Spilca
- Spring Data? Да, та! by Евгений Борисов
- Перенимаем опыт Google в построении микросервисов с gRPC by Александр Борисов
Минимальные предусловия для работы с проектом Niffler
Мы будем использовать docker для БД (Postgres), кроме того, будем запускать микросервисы в едином docker network при помощи docker-compose
Установка на Mac (Для ARM и Intel разные пакеты)
После установки и запуска docker daemon необходимо убедиться в работе команд docker, например docker -v
:
Dmitriis-MacBook-Pro ~ % docker -v
Docker version 20.10.14, build a224086
docker pull postgres:15.1
После pull
вы увидите спуленный image командой docker images
mitriis-MacBook-Pro ~ % docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
postgres 15.1 9f3ec01f884d 10 days ago 379MB
postgres latest 9f3ec01f884d 10 days ago 379MB
docker volume create pgdata
docker run --name niffler-all -p 5432:5432 -e POSTGRES_PASSWORD=secret -v pgdata:/var/lib/postgresql/data -d postgres:15.1
Например, DBeaver или Datagrip. Мы рекомендуем бесплатную PgAdmin 4.
6. Подключиться к БД postgres (host: localhost, port: 5432, user: postgres, pass: secret, database name: postgres) из PgAdmin и создать пустые БД микросервисов
create database "niffler-userdata" with owner postgres;
create database "niffler-spend" with owner postgres;
create database "niffler-currency" with owner postgres;
create database "niffler-auth" with owner postgres;
Версию установленной Java необходимо проверить командой java -version
Dmitriis-MacBook-Pro ~ % java -version
openjdk version "19.0.1" 2022-10-18
OpenJDK Runtime Environment Homebrew (build 19.0.1)
Если у вас несколько версий Java одновременно - то хотя бы одна из них должна быть 17+ Если java не установлена вовсе, то рекомендую установить OpenJDK (например, из https://adoptium.net/en-GB/)
Инструкция. Рекомендованная версия Node.js - 18.13.0 (LTS)
Dmitriis-MacBook-Pro niffler % cd niffler-frontend
Dmitriis-MacBook-Pro niffler-frontend % npm i
Dmitriis-MacBook-Pro niffler-frontend % npm run build:dev
Для этого зайти в меню Run -> Edit Configurations -> выбрать main класс -> указать Active profiles: local Инструкция.
- Запустить сервис auth
Dmitriis-MacBook-Pro niffler % cd niffler-auth
Dmitriis-MacBook-Pro niffler-auth % gradle bootRun --args='--spring.profiles.active=local'
Или просто перейдя к main-классу приложения NifflerAuthApplication выбрать run в IDEA (предварительно удостовериться что выполнен предыдущий пункт)
4 Запустить в любой последовательности другие сервисы: niffler-currency, niffler-spend, niffler-gateway, niffler-userdata
1. Создать бесплатную учетную запись на https://hub.docker.com/ (если отсутствует)
Dmitriis-MacBook-Pro niffler % cd niffler
Dmitriis-MacBook-Pro niffler % docker-compose pull
Dmitriis-MacBook-Pro niffler % docker-compose up -d
Niffler при запуске в докере будет работать для вас на порту 80, этот порт можно не указывать в браузере, таким образом переходить напрямую по ссылке http://127.0.0.1/ ВАЖНО! из docker-network Вам будут доступны только следующие порты:
- порт 80 (все запросы с него перенаправляются nginx-ом на frontend)
- порт 9000 (сервис niffler-auth)
- порт 8090 (сервис niffler-gateway)
1. Войти в свою УЗ на https://hub.docker.com/ и последовательно создать публичные репозитории
- niffler-frontend
- niffler-userdata
- niffler-spend
- niffler-gateway
- niffler-currency
- niffler-auth
Допустим, что ваш username на https://hub.docker.com - foobazz
- где foobazz - ваш юзернэйм на https://hub.docker.com/
!К замене надо отнестись внимательно, вот список мест на текущий момент:!
- build.gradle всех сервисов Spring
- docker-compose.yaml в корне проекта
- docker.properties в модуле niffler-frontend
Dmitriis-MacBook-Pro niffler % cd niffler
3. Собрать весь java проект (можно скипнуть тесты, т.к. наши e-2-e все равно не запустятся без полностью развернутого Niffler)
Dmitriis-MacBook-Pro niffler % gradle clean build -x test
Dmitriis-MacBook-Pro niffler % gradle dockerTag
Dmitriis-MacBook-Pro niffler % gradle dockerPush
Dmitriis-MacBook-Pro niffler % cd niffler-frontend
Dmitriis-MacBook-Pro niffler-frontend % bash build-docker.sh
Dmitriis-MacBook-Pro niffler % docker-compose up -d