Этот репозиторий содержит несколько микросервисов на FastAPI, связанных с работой пользователей, проектами, уведомлениями и аналитикой. Все сервисы используют PostgreSQL в качестве базы данных и могут быть запущены через Docker Compose.
- Docker Desktop (включает Docker Compose)
- Минимум 4 GB свободной оперативной памяти
- Минимум 2 GB свободного места на диске
- Python 3.14+
- Pipenv для управления зависимостями
- PostgreSQL 16+ (или используйте Docker только для PostgreSQL)
taskflow/
├── docker/
│ └── docker-compose.yml # Конфигурация Docker Compose для всех сервисов
├── services/
│ ├── project_service/ # Сервис управления проектами
│ ├── user_service/ # Сервис управления пользователями
│ ├── notification_service/ # Сервис уведомлений
│ └── project_analytics_service/ # Сервис аналитики проектов
├── libs/ # Общие библиотеки
├── scripts/ # Вспомогательные скрипты
└── tests/ # Общие тесты
Этот способ запускает все сервисы и PostgreSQL в контейнерах Docker.
- Docker Desktop установлен и запущен
- Docker Compose (входит в Docker Desktop)
-
Клонируйте репозиторий:
git clone https://github.com/needslyp/taskflow.git cd taskflow -
Перейдите в папку
docker:cd docker -
Запустите все сервисы:
docker compose up --build
При первом запуске это может занять несколько минут, так как Docker будет собирать образы.
-
После успешного запуска сервисы будут доступны по следующим адресам:
- project_service: http://localhost:8001
- user_service: http://localhost:8002
- notification_service: http://localhost:8003
- project_analytics_service: http://localhost:8004
- PostgreSQL: localhost:5432
-
Swagger документация доступна по адресу
/docsдля каждого сервиса:
- Остановить все сервисы:
Ctrl+Cв терминале илиdocker compose down - Запустить в фоновом режиме:
docker compose up -d - Просмотр логов:
docker compose logsилиdocker compose logs <service_name> - Пересобрать образы:
docker compose up --build - Остановить и удалить контейнеры:
docker compose down - Остановить и удалить контейнеры с данными:
docker compose down -v(⚠️ удалит данные PostgreSQL)
Для разработки отдельных сервисов можно запускать их локально.
-
Клонируйте репозиторий:
git clone https://github.com/needslyp/taskflow.git cd taskflow -
Перейдите в папку нужного микросервиса:
cd services/user_service -
Установите зависимости через pipenv:
pipenv install
-
Активируйте виртуальное окружение:
pipenv shell
-
Убедитесь, что PostgreSQL запущен и доступен (или используйте Docker только для PostgreSQL):
docker compose -f ../docker/docker-compose.yml up postgres -d
-
Запустите сервис:
uvicorn app.main:app --reload
Проект использует PostgreSQL 16 в качестве основной базы данных. При запуске через Docker Compose база данных автоматически создается и настраивается.
- Host:
localhost(при подключении извне Docker) илиpostgres(изнутри Docker сети) - Port:
5432 - User:
taskflow - Password:
taskflow - Database:
taskflow_db
cd docker
docker compose exec postgres psql -U taskflow -d taskflow_dbПосле подключения вы можете выполнять SQL команды:
\dt- показать все таблицы\d <table_name>- показать структуру таблицы\q- выйти из psql
Используйте любой PostgreSQL клиент (например, pgAdmin, DBeaver, DataGrip) с параметрами:
- Host:
localhost - Port:
5432 - Username:
taskflow - Password:
taskflow - Database:
taskflow_db
psql -h localhost -p 5432 -U taskflow -d taskflow_dbПри запросе пароля введите: taskflow
# Подключиться к базе данных
docker compose exec postgres psql -U taskflow -d taskflow_db
# Выполнить SQL команду напрямую
docker compose exec postgres psql -U taskflow -d taskflow_db -c "SELECT version();"
# Создать резервную копию базы данных
docker compose exec postgres pg_dump -U taskflow taskflow_db > backup.sql
# Восстановить базу данных из резервной копии
docker compose exec -T postgres psql -U taskflow taskflow_db < backup.sql- Все переменные окружения хранятся в
.envфайлах внутри сервисов. - Зависимости для каждого сервиса определяются через
PipfileиPipfile.lock. - При запуске через Docker переменные окружения настраиваются автоматически через
docker-compose.yml.
Проект состоит из следующих микросервисов:
| Сервис | Порт (Docker) | Описание |
|---|---|---|
project_service |
8001 | Управление проектами |
user_service |
8002 | Управление пользователями |
notification_service |
8003 | Система уведомлений |
project_analytics_service |
8004 | Аналитика по проектам |
Все сервисы используют общую базу данных PostgreSQL и могут взаимодействовать друг с другом через HTTP API.
-
Тесты для сервисов лежат в директориях
services/<имя_сервиса>/testsи в общемtests/. -
Для запуска тестов используйте:
pipenv run pytest
-
При разработке рекомендуется использовать локальный запуск сервисов с
--reloadфлагом для автоматической перезагрузки при изменениях. -
Для тестирования интеграции с базой данных используйте Docker Compose для запуска PostgreSQL:
cd docker docker compose up postgres -d
- Создайте новую директорию внутри
services/. - Скопируйте базовую структуру из существующего сервиса.
- Настройте
Pipfile,.env, тесты и основное приложение FastAPI по образцу.
- Swagger/OpenAPI документация автоматически доступна по адресу
/docsу каждого запущенного сервиса. - При запуске через Docker документация доступна по следующим адресам:
- http://localhost:8001/docs - project_service
- http://localhost:8002/docs - user_service
- http://localhost:8003/docs - notification_service
- http://localhost:8004/docs - project_analytics_service
- Альтернативная документация ReDoc доступна по адресу
/redocдля каждого сервиса.
- Файл
.gitignoreнастроен для игнорирования секретов, виртуальных окружений, временных файлов, логов и артефактов тестов.
MIT License
needslyp