Files
ARMStrong.Vision/README.md
T
2026-06-08 22:55:30 +04:00

5.2 KiB

Armstrong Vision

Монорепозиторий: Rails API (api/), React + Vite (frontend/) и PostgreSQL, собранные в один стек через Docker Compose. Для повседневных команд используется Makefile в корне проекта.

Требования

На Linux обычно достаточно пакетов docker / docker-compose (или плагин docker compose) и make.

Быстрый старт

После клонирования репозитория из корня каталога проекта:

make prepare

Команда make prepare (то же самое, что make setup) выполняет:

  1. сборку образов (docker compose build);
  2. запуск сервисов в фоне с ожиданием готовности Postgres и API (docker compose up -d --wait);
  3. при старте backend в entrypoint вызывается rails db:prepare (БД и схема) — без db:seed (так устроен Rails);
  4. затем make prepare отдельно выполняет rails db:seed в контейнере backend (можно отключить: make prepare SEED_ON_PREPARE=0);
  5. во 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 обычно пересобирает сам).