IrinaStyazhkina / niffler

Niffler. The coin keeper by QA.GURU based on Spring Boot microservices.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Технологии, использованные в Niffler

Рекомендуемые материалы к просмотру:

Минимальные предусловия для работы с проектом Niffler

1. Установить docker (Если не установлен)

Мы будем использовать docker для БД (Postgres), кроме того, будем запускать микросервисы в едином docker network при помощи docker-compose

Установка на Windows

Установка на Mac (Для ARM и Intel разные пакеты)

Установка на Linux

После установки и запуска docker daemon необходимо убедиться в работе команд docker, например docker -v:

Dmitriis-MacBook-Pro ~ % docker -v
Docker version 20.10.14, build a224086

2. Спуллить контейнер postgres версии 15.1

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

3. Создать volume для сохранения данных из БД в docker на вашем компьютере

docker volume create pgdata

4. Запустить БД командой

docker run --name niffler-all -p 5432:5432 -e POSTGRES_PASSWORD=secret -v pgdata:/var/lib/postgresql/data -d postgres:15.1

5. Установить одну из программ для визуальной работы с Postgres

Например, 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;

7. Установить Java версии 17 или новее. Это необходимо, т.к. проект не поддерживает версии <17

Версию установленной 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/)

8. Установить пакетый менеджер для сборки front-end npm

Инструкция. Рекомендованная версия Node.js - 18.13.0 (LTS)

Запуск Niffler локальное в IDE:

1. Выбрать какой фронтенд предполагается запускать - REST или GraphQL, и перейти в соответсвующий каталог

для REST:

Dmitriis-MacBook-Pro niffler % cd niffler-frontend

или для GraphQL:

Dmitriis-MacBook-Pro niffler % cd niffler-frontend-gql

2. Запустить фронтенд (сначала обновить зависимости)

Dmitriis-MacBook-Pro niffler-frontend % npm i
Dmitriis-MacBook-Pro niffler-frontend % npm run build:dev

3. Прописать run конфигурацию для всех сервисов niffler-* - Active profiles local

Для этого зайти в меню Run -> Edit Configurations -> выбрать main класс -> указать Active profiles: local Инструкция.

4 Запустить сервис Niffler-auth c помощью gradle или командой Run в IDE:

  • Запустить сервис auth

Dmitriis-MacBook-Pro niffler % cd niffler-auth
Dmitriis-MacBook-Pro niffler-auth % gradle bootRun --args='--spring.profiles.active=local'

Или просто перейдя к main-классу приложения NifflerAuthApplication выбрать run в IDEA (предварительно удостовериться что выполнен предыдущий пункт)

5 Запустить в любой последовательности другие сервисы: niffler-currency, niffler-spend, niffler-gateway, niffler-userdata

Запуск Niffler в докере:

1. Создать бесплатную учетную запись на https://hub.docker.com/ (если отсутствует)

2. Создать в настройках своей учетной записи access_token

Инструкция.

3. Выполнить docker login с созданным access_token (в инструкции это описано)

4. Прописать в etc/hosts элиас для Docker-имени фронтенда: 127.0.0.1 niffler-frontend

Dmitriis-MacBook-Pro niffler % vi /etc/hosts
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
127.0.0.1       niffler-frontend

5. Перейти в корневой каталог проекта

Dmitriis-MacBook-Pro niffler % cd niffler

6. Запустить все сервисы, если необходим фронтенд GraphQL, то это указывается аргументом к скрипту:

для REST:

Dmitriis-MacBook-Pro  niffler % bash docker-compose-dev.sh

для GraphQL:

Dmitriis-MacBook-Pro  niffler % bash docker-compose-dev.sh gql

Niffler при запуске в докере будет работать для вас по адресу http://niffler-frontend:80/, этот порт НЕ НУЖНО указывать в браузере, таким образом переходить напрямую по ссылке http://niffler-frontend/ ВАЖНО! из docker-network Вам будут доступны только следующие порты:

  • порт 80 (все запросы с него перенаправляются nginx-ом на frontend)
  • порт 9000 (сервис niffler-auth)
  • порт 8090 (сервис niffler-gateway)

Создание своего docker repository для форка Niffler и сборка своих докер контейнеров

1. Войти в свою УЗ на https://hub.docker.com/ и последовательно создать публичные репозитории

  • niffler-frontend
  • niffler-frontend-gql
  • niffler-userdata
  • niffler-spend
  • niffler-gateway
  • niffler-currency
  • niffler-auth

Допустим, что ваш username на https://hub.docker.com - foobazz

2. заменить в проекте все имена image dtuchs/niffler на foobazz/niffler

!К замене надо отнестись внимательно, вот список мест на текущий момент:!

  • build.gradle всех сервисов Spring
  • docker-compose.yaml в корне проекта
  • docker-compose.test.yaml в корне проекта
  • docker.properties в модуле niffler-frontend
  • docker.properties в модуле niffler-frontend-gql

3. Перейти в корневой каталог проекта

Dmitriis-MacBook-Pro niffler % cd niffler

4. Собрать все имеджи, запушить и запустить niffler одной командой, если необходим фронтенд GraphQL, то это указывается аргументом к скрипту:

для REST:

Dmitriis-MacBook-Pro  niffler % bash docker-compose-dev.sh push

для GraphQL:

Dmitriis-MacBook-Pro  niffler % bash docker-compose-dev.sh gql push

Запуск e-2-e тестов в Docker network изолированно Niffler в докере:

1. Перейти в корневой каталог проекта

Dmitriis-MacBook-Pro niffler % cd niffler

2. Запустить все сервисы и тесты, если необходим фронтенд GraphQL, то это указывается аргументом к скрипту:

для REST:

Dmitriis-MacBook-Pro  niffler % bash docker-compose-e2e.sh

для GraphQL:

Dmitriis-MacBook-Pro  niffler % bash docker-compose-e2e.sh gql

3. Selenoid UI доступен по адресу: http://localhost:9090/

Enjoy the Niffler

About

Niffler. The coin keeper by QA.GURU based on Spring Boot microservices.

License:MIT License


Languages

Language:Java 66.6%Language:JavaScript 25.4%Language:CSS 5.7%Language:HTML 0.9%Language:Shell 0.9%Language:Dockerfile 0.4%Language:FreeMarker 0.2%