4.3 KiB
Multiberry Backend
Веб-приложение для хакатона ВТБ. Backend на Rust + Axum, БД — PostgreSQL.
🚀 Быстрый старт (macOS)
1. Установка зависимостей
при условии что docker, sops, age уже установлены
just - это Makefile 2.0
brew install just
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup --version
cargo --version
# если cargo ругается
rustup default stable
# если же нет, все прекрасно, curl и rustup уже сделали свое дело
2. Клонируй репозиторий
git clone ssh://git@gitverse.ru:2222/rorikstr/multiberry-backend.git
cd multiberry-backend
3. Запусти проект
Короч. Чтобы не запускать бесконечное число раз sops exec-env для вскрытия secrets.yaml я придумал выполнять проект на Makefile 2.0: justfile
# Посмотри все доступные команды
just
# Запусти базу данных
just db-up
# В новом терминале запусти бэкенд
just run
# Проверь, что всё работает
just health
Ожидаемый результат:
{"status":"Database connection is successful."}
✅ Готово! Бэкенд работает на http://localhost:3000
📋 Основные команды
| Команда | Описание |
|---|---|
just run |
Запустить бэкенд в dev режиме |
just db-up |
Поднять PostgreSQL |
just db-down |
Остановить PostgreSQL |
just db-reset |
Пересоздать БД (удалит все данные!) |
just build |
Собрать релизную версию |
just test |
Запустить тесты |
just health |
Проверить здоровье API |
just db-logs |
Показать логи БД |
just stop |
Остановить всё |
Больше информации: just --list
🔐 Секреты и переменные окружения
Все секреты (пароли, API ключи) хранятся в зашифрованном файле secrets.yaml.
Как это работает:
justкоманды автоматически расшифровываютsecrets.yamlперед запуском
Если нужно отредактировать секреты (добавить новый API ключ и т.д.):
sops secrets.yaml
🛠️ Разработка
Структура проекта
.
├── src/
│ └── main.rs # Основной код приложения
├── Cargo.toml # Зависимости Rust
├── Cargo.lock # Зафиксированные версии зависимостей
├── compose.yaml # Описание Docker контейнера с PostgreSQL
├── secrets.yaml # Зашифрованные секреты (в Git, не редактируй вручную!)
├── .sops.yaml # Конфигурация sops (управление ключами)
├── justfile # Команды проекта
└── README.md # Этот файл
Workflow разработки
-
Создай фича-ветку:
git checkout -b feature/my-feature -
Запусти проект:
just db-up just run -
Внеси изменения в
src/main.rs -
Тесты:
just test -
Push и создай Pull Request
❓ Troubleshooting
"Connection reset by peer" при запуске
БД еще инициализируется. Подожди 5-10 секунд и попробуй снова:
just run
"password authentication failed"
Вероятно, в secrets.yaml неверный пароль. Напиши Wave.
Docker Desktop не запускается
Убедись, что Docker Desktop открыт:
open /Applications/Docker.app
just db-logs # Логи БД
docker ps # Список запущенных контейнеров
Happy coding! 🚀