Skip to content

Repository files navigation

Microservices Monorepo

Исходный код - https://github.com/inasekin/microservices-monorepo

CI Maintainability

О проекте

Этот репозиторий представляет собой монорепозиторий для микросервисного проекта на .NET. Включает несколько микросервисов, инфраструктурные компоненты, базу данных и фронтенд-часть.

Структура репозитория

  • src/ — исходный код микросервисов и компонентов.
  • frontend/ — исходный код фронтенд-приложения.
  • docker/ — Docker-файлы и вспомогательные скрипты.
  • Makefile — удобные команды для управления проектом.
  • docs/ — документация к проекту (архитектура, ERD и тд).
  • tests/ — тесты к приложению.

Работа с подмодулями

Git-модули позволяют добавлять другие Git-репозитории как связанные подмодули. Файл .gitmodules содержит информацию о пути и URL для каждого подмодуля:

   [submodule "frontend"]
   path = frontend
   url = https://github.com/inasekin/bugtracker-frontend

Добавление подмодуля

Добавьте подмодуль:

git submodule add <URL> <путь>

Инициализируйте и скачайте подмодуль:

git submodule update --recursive --remote

или

git submodule update --init --recursive

Обновление изменений в подмодуле

Зайдите в директорию подмодуля:

cd <путь>

Подтяните изменения:

git pull origin main

Вернитесь в главную директорию и коммитьте измененный ссылочный комит:

cd ../
git add .
git commit -m "feat: update submodule <имя>”

Требования

Инструменты

  1. Docker и Docker Compose:

  2. Make:

    • Make — это инструмент автоматизации. Используется для упрощения запуска команд.
    • Установка на macOS и Linux:
      sudo apt update && sudo apt install make -y # Для Ubuntu/Debian
      brew install make                           # Для macOS
    • Установка на Windows:
      • Установить Make для Windows.
      • Добавить make в переменную окружения PATH.
  3. .NET SDK 8.0:

    • Скачать и установить с официального сайта: .NET SDK.
  4. Для работы автоматической проверки хуков используйте команду

    git config core.hooksPath .githooks

Шаги запуска

Запуск баз данных

  1. Соберите базы данных:
    make db-up
  2. Остановите инфраструктуру:
    make db-down

Запуск остальных вспомогательных сервисов (RabbitMQ и др.)

  1. Поднять:
    make brokers-up
  2. Остановить:
    make brokers-down

Запуск микросервисов

  1. Соберите и запустите микросервисы:
    make services-up
  2. Перезапустите отдельный сервис:
    make restart-service SERVICE=<имя_сервиса>
  3. Остановите микросервисы:
    make services-down

Запуск сервисов для логов

  1. Запуск

    make elk-up
  2. Остановка

    make elk-down

Запуск frontend

  1. Соберите и запустите фронтенд:
    make frontend-up
  2. Не забудьте создать .env файл в директории frontend
VITE_API_URL=http://localhost:5010
  1. Остановите фронтенд:
    make frontend-down

Пример стартовой миграции

UserService:

dotnet ef migrations add InitUserDb \
--project src/Services/UserService/UserService.Infrastructure/UserService.Infrastructure.csproj \
--startup-project src/Services/UserService/UserService.Api/UserService.Api.csproj \
--output-dir Migrations
dotnet ef database update \
    --project src/Services/UserService/UserService.DAL/UserService.DAL.csproj \
    --startup-project src/Services/UserService/UserService.Api/UserService.Api.csproj

Запуск и дебаг отдельных сервисов

При запуске отдельного сервиса swagger будет доступен по адресу - http://localhost:{порт из Properties/launchSettings.json}/api/v1/{префикс сервиса}/swagger/index.html

Пример - http://localhost:6002/api/user/swagger/index.html

Если запуск первый раз, то нужно будет выполнить миграции

  1. Билд проекта:
    make build SERVICE=UserService
  2. Запуск проекта:
    make run SERVICE=UserService
  3. Watch проекта:
    make watch SERVICE=UserService
  4. Debug проекта:
    make debug SERVICE=UserService

About

Open source project for C# ASP.NET Core course

Resources

Stars

1 star

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages