185 lines
6.3 KiB
Makefile
185 lines
6.3 KiB
Makefile
# ------------------------------------------------------------------------------
|
|
# Пути
|
|
# ------------------------------------------------------------------------------
|
|
API_DIR := api
|
|
FRONTEND_DIR := frontend
|
|
|
|
# Секунды ожидания для `docker compose up --wait` (healthcheck Postgres + API).
|
|
WAIT_TIMEOUT ?= 300
|
|
DOCKER_UP := docker compose up -d --wait --wait-timeout $(WAIT_TIMEOUT)
|
|
|
|
# После `make prepare` / `make dev`: вызвать `rails db:seed` в backend (0 — не вызывать).
|
|
SEED_ON_PREPARE ?= 1
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Локальная разработка: Postgres + Rails на хосте (без Docker)
|
|
# ------------------------------------------------------------------------------
|
|
LOCAL_PG_HOST ?= localhost
|
|
LOCAL_PG_PORT ?= 5432
|
|
LOCAL_PG_USER ?= postgres
|
|
LOCAL_PG_PASSWORD ?= postgres
|
|
LOCAL_PG_DB ?= app_development
|
|
|
|
LOCAL_PG_ENV := PGPASSWORD=$(LOCAL_PG_PASSWORD) PGHOST=$(LOCAL_PG_HOST) PGPORT=$(LOCAL_PG_PORT) PGUSER=$(LOCAL_PG_USER)
|
|
LOCAL_RAILS_ENV := DATABASE_HOSTNAME=$(LOCAL_PG_HOST) DATABASE_PORT=$(LOCAL_PG_PORT) DATABASE_USERNAME=$(LOCAL_PG_USER) DATABASE_PASSWORD=$(LOCAL_PG_PASSWORD)
|
|
|
|
# Команда для local-rails: make local-rails RAILS_CMD="db:migrate"
|
|
RAILS_CMD ?= console
|
|
|
|
.DEFAULT_GOAL := help
|
|
|
|
.PHONY: help prepare setup dev \
|
|
restart build start stop logs bash \
|
|
rails bundle yarn npm \
|
|
up \
|
|
db db-console db-migrate db-rollback db-reset db-seed db-prepare \
|
|
db-create db-drop db-docker-recreate \
|
|
db-create-user db-grant-user \
|
|
local-bundle local-rails local-console local-server \
|
|
local-db-create local-db-drop local-db-migrate local-db-rollback \
|
|
local-db-reset local-db-seed local-db-prepare local-db-console
|
|
|
|
help:
|
|
@echo "Быстрый старт (Docker: БД + API + фронтенд)"
|
|
@echo " make prepare # сборка, up, затем db:seed (если SEED_ON_PREPARE=1; то же: make setup)"
|
|
@echo " make dev # prepare, затем логи всех сервисов (Ctrl+C — только выход из просмотра логов)"
|
|
@echo " make up # поднять стек (ждёт готовности Postgres и API)"
|
|
@echo " make stop # docker compose down"
|
|
@echo ""
|
|
@echo "Прочие команды Docker"
|
|
@echo " make restart|build|logs"
|
|
@echo " make bash # оболочка в контейнере backend"
|
|
@echo " make rails CMD=... # например: make rails CMD=db:migrate"
|
|
@echo " make bundle CMD=... # bundle в контейнере backend"
|
|
@echo " make yarn CMD=... # yarn в контейнере frontend"
|
|
@echo " make db-console # psql в контейнере БД (синоним: make db)"
|
|
@echo " make db-migrate|db-rollback|db-reset|db-seed|db-prepare"
|
|
@echo " make db-create|db-drop # rails db:create / db:drop в backend"
|
|
@echo " make db-docker-recreate # пустая БД в контейнере Postgres (dropdb + createdb)"
|
|
@echo ""
|
|
@echo "Локально на хосте (Postgres + Rails без Docker)"
|
|
@echo " make local-bundle && make local-db-prepare && make local-server"
|
|
@echo " Параметры БД: переменные LOCAL_PG_* в начале этого Makefile"
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Docker Compose — подготовка и жизненный цикл
|
|
# ------------------------------------------------------------------------------
|
|
prepare setup:
|
|
docker compose build
|
|
$(DOCKER_UP)
|
|
ifneq ($(SEED_ON_PREPARE),0)
|
|
docker compose exec -T backend ./bin/rails db:seed
|
|
endif
|
|
@echo ""
|
|
@echo "Готово:"
|
|
@echo " API http://localhost:3000"
|
|
@echo " Фронтенд http://localhost:5173"
|
|
@echo " Postgres localhost:5432, БД app_development, пользователь postgres"
|
|
|
|
dev: prepare
|
|
docker compose logs -f
|
|
|
|
restart:
|
|
docker compose down
|
|
docker compose up -d --build --wait --wait-timeout $(WAIT_TIMEOUT)
|
|
|
|
build:
|
|
docker compose build
|
|
|
|
start up:
|
|
$(DOCKER_UP)
|
|
|
|
stop:
|
|
docker compose down
|
|
|
|
logs:
|
|
docker compose logs -f
|
|
|
|
bash:
|
|
docker compose exec backend bash
|
|
|
|
rails:
|
|
docker compose exec backend ./bin/rails $(CMD)
|
|
|
|
bundle:
|
|
docker compose exec backend bundle $(CMD)
|
|
|
|
yarn:
|
|
docker compose exec frontend yarn $(CMD)
|
|
|
|
npm:
|
|
docker compose exec frontend npm $(CMD)
|
|
|
|
db-console db:
|
|
docker compose exec database psql -U postgres -d app_development
|
|
|
|
db-migrate:
|
|
docker compose exec backend ./bin/rails db:migrate
|
|
|
|
db-rollback:
|
|
docker compose exec backend ./bin/rails db:rollback
|
|
|
|
db-reset:
|
|
docker compose exec backend ./bin/rails db:reset
|
|
|
|
db-seed:
|
|
docker compose exec -T backend ./bin/rails db:seed
|
|
|
|
db-prepare:
|
|
docker compose exec backend ./bin/rails db:prepare
|
|
|
|
db-create:
|
|
docker compose exec backend ./bin/rails db:create
|
|
|
|
db-drop:
|
|
docker compose exec backend ./bin/rails db:drop
|
|
|
|
db-docker-recreate:
|
|
docker compose exec database dropdb --if-exists -U postgres app_development
|
|
docker compose exec database createdb -U postgres app_development
|
|
|
|
db-create-user:
|
|
docker compose exec database psql -U postgres -c "CREATE USER app_development WITH PASSWORD 'app_development';"
|
|
|
|
db-grant-user:
|
|
docker compose exec database psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE app_development TO app_development;"
|
|
|
|
# ------------------------------------------------------------------------------
|
|
# Локально: Bundler + Rails + psql к Postgres на хосте
|
|
# ------------------------------------------------------------------------------
|
|
local-bundle:
|
|
cd $(API_DIR) && bundle install
|
|
|
|
local-rails:
|
|
cd $(API_DIR) && $(LOCAL_RAILS_ENV) bin/rails $(RAILS_CMD)
|
|
|
|
local-console:
|
|
$(MAKE) local-rails RAILS_CMD=console
|
|
|
|
local-server:
|
|
cd $(API_DIR) && $(LOCAL_RAILS_ENV) bin/rails server -b 0.0.0.0 -p 3000
|
|
|
|
local-db-create:
|
|
cd $(API_DIR) && $(LOCAL_RAILS_ENV) bin/rails db:create
|
|
|
|
local-db-drop:
|
|
cd $(API_DIR) && $(LOCAL_RAILS_ENV) bin/rails db:drop
|
|
|
|
local-db-migrate:
|
|
cd $(API_DIR) && $(LOCAL_RAILS_ENV) bin/rails db:migrate
|
|
|
|
local-db-rollback:
|
|
cd $(API_DIR) && $(LOCAL_RAILS_ENV) bin/rails db:rollback
|
|
|
|
local-db-reset:
|
|
cd $(API_DIR) && $(LOCAL_RAILS_ENV) bin/rails db:reset
|
|
|
|
local-db-seed:
|
|
cd $(API_DIR) && $(LOCAL_RAILS_ENV) bin/rails db:seed
|
|
|
|
local-db-prepare:
|
|
cd $(API_DIR) && $(LOCAL_RAILS_ENV) bin/rails db:prepare
|
|
|
|
local-db-console:
|
|
$(LOCAL_PG_ENV) psql -d $(LOCAL_PG_DB)
|