5.2 KiB
Armstrong Vision
Монорепозиторий: Rails API (api/), React + Vite (frontend/) и PostgreSQL, собранные в один стек через Docker Compose. Для повседневных команд используется Makefile в корне проекта.
Требования
- Docker и Docker Compose v2
- GNU Make
На Linux обычно достаточно пакетов docker / docker-compose (или плагин docker compose) и make.
Быстрый старт
После клонирования репозитория из корня каталога проекта:
make prepare
Команда make prepare (то же самое, что make setup) выполняет:
- сборку образов (
docker compose build); - запуск сервисов в фоне с ожиданием готовности Postgres и API (
docker compose up -d --wait); - при старте backend в entrypoint вызывается
rails db:prepare(БД и схема) — безdb:seed(так устроен Rails); - затем
make prepareотдельно выполняетrails db:seedв контейнере backend (можно отключить:make prepare SEED_ON_PREPARE=0); - во frontend-контейнере при старте выполняется
npm install, затемnpm run dev.
Команда make dev сначала делает то же, что make prepare (включая сиды при SEED_ON_PREPARE=1), затем включает поток логов.
После успешного выполнения:
| Сервис | Адрес |
|---|---|
| API | http://localhost:3000 |
| Фронтенд | http://localhost:5173 |
| Postgres | localhost:5432, БД app_development, пользователь postgres, пароль postgres |
Остановка стека:
make stop
Полезные команды
| Команда | Назначение |
|---|---|
make или make help |
краткая справка по целям |
make prepare / make setup |
первый запуск: сборка + подъём стека |
make up / make start |
поднять уже собранный стек (с --wait) |
make dev |
как prepare, затем поток логов всех сервисов (Ctrl+C только выходит из просмотра логов) |
make restart |
пересборка и перезапуск |
make logs |
следить за логами |
make bash |
оболочка в контейнере backend |
make rails CMD='db:migrate' |
произвольная команда rails в backend |
make db-console |
psql в контейнере Postgres |
make db-seed |
загрузить сиды (db/seeds.rb) |
Таймаут ожидания healthcheck при up / prepare (секунды, по умолчанию 300):
make up WAIT_TIMEOUT=600
Сиды
Демо-данные для таблиц channels и histories задаются в api/db/seeds.rb. Загрузка в уже запущенном стеке:
make db-seed
Сиды сделаны идемпотентными: если в channels уже есть записи, повторный db:seed их не дублирует.
Локальная разработка без Docker (опционально)
Если Postgres установлен на машине, API и фронт можно запускать локально. Переменные для подключения к БД см. в Makefile (LOCAL_PG_*). Кратко:
cd api && bundle install
make local-db-prepare # из корня репозитория
make local-server # Rails на :3000
Подробнее по целям local-* выводит make help.
Структура репозитория
├── Makefile # команды для Docker и локального Rails
├── docker-compose.yml # Postgres, backend, frontend
├── api/ # Ruby on Rails 8 (API-only)
└── frontend/ # React + Vite
Дополнительно в подкаталогах могут быть свои README шаблонов фреймворков (api/README.md, frontend/README.md).
Замечания
- Порт 5432 на хосте занят контейнером Postgres; если локально уже крутится свой PostgreSQL, измените проброс порта в
docker-compose.ymlили остановите локальный инстанс. - Код API и фронтенда монтируется в контейнеры томами: правки на диске сразу видны внутри сервисов (для Rails при необходимости перезапустите процесс вручную; Vite обычно пересобирает сам).