# lf_mri_platform - unified MRI microservice stack # Requires: Docker Desktop with Compose v2, GNU make # # Service targets: # make plug - start all services in stub mode (no hardware) # make real - start all services in real hardware mode # make down - stop and remove containers # make build - build all images without starting # make logs - tail logs from all services # make health - check all service health endpoints # make restart - restart a single service: make restart svc=orchestrator # make ps - show container status # # GUI targets: # make install - install prerequisites (venv + deps for GUI) # make gui - start GUI only (no Docker services) # make start - start Docker services + GUI (plug mode) # make start-real - start Docker services + GUI (real mode) # # Dev targets: # make shell - open shell in a running container: make shell svc=orchestrator # make clean - stop + remove volumes (full reset) .PHONY: up down plug real logs health restart build ps \ install gui start start-real shell clean ENV_FILE := .env GUI_DIR := apps/gui VENV := $(GUI_DIR)/.venv PYTHON := python # -- Bootstrap ---------------------------------------------------------------- $(ENV_FILE): @echo "Creating .env from .env.example..." cp .env.example $(ENV_FILE) install: $(ENV_FILE) powershell -ExecutionPolicy Bypass -File install.ps1 # -- Service startup ---------------------------------------------------------- up: $(ENV_FILE) docker compose --env-file $(ENV_FILE) up --build -d plug: $(ENV_FILE) ORCHESTRATOR_MODE=plug docker compose --env-file $(ENV_FILE) up --build -d real: $(ENV_FILE) ORCHESTRATOR_MODE=real docker compose --env-file $(ENV_FILE) up --build -d down: docker compose down clean: docker compose down --volumes build: $(ENV_FILE) docker compose --env-file $(ENV_FILE) build # -- GUI ---------------------------------------------------------------------- gui: $(VENV)/Scripts/python $(GUI_DIR)/app.py start: plug $(MAKE) gui start-real: real $(MAKE) gui # -- Monitoring --------------------------------------------------------------- logs: docker compose logs -f ps: docker compose ps restart: docker compose restart $(svc) shell: docker compose exec $(svc) /bin/sh # -- Health checks ------------------------------------------------------------ health: @echo "orchestrator :" && curl -sf http://localhost:$${ORCHESTRATOR_PORT:-1717}/health || echo "OFFLINE" @echo "seq-interp :" && curl -sf http://localhost:$${SEQ_INTERP_PORT:-7475}/health || echo "OFFLINE" @echo "spectrometer :" && curl -sf http://localhost:$${SPECTROMETER_PORT:-8000}/api/ || echo "OFFLINE" @echo "reconstructor :" && curl -sf http://localhost:$${RECONSTRUCTOR_PORT:-8081}/health || echo "OFFLINE" @echo "spectroscopy :" && curl -sf http://localhost:$${SPECTROSCOPY_PORT:-8002}/health || echo "OFFLINE"