| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113 |
- services:
- # ── Orchestration workflow engine ─────────────────────────────────────────
- orchestrator:
- build:
- context: ./services/orchestrator
- dockerfile: Dockerfile
- image: lf-orchestrator:${ORCHESTRATOR_VERSION:-dev}
- container_name: lf-orchestrator
- ports:
- - "${ORCHESTRATOR_PORT:-1717}:1717"
- environment:
- MODE: ${ORCHESTRATOR_MODE:-plug}
- SPECTROMETER_URL: http://spectrometer:8000
- RECONSTRUCTOR_URL: http://reconstructor:8000
- SEQ_INTERP_URL: http://seq-interp:7475
- depends_on:
- seq-interp:
- condition: service_healthy
- restart: unless-stopped
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:1717/health"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_period: 15s
- # ── MRI sequence interpreter ───────────────────────────────────────────────
- # Build context is the monorepo root so Dockerfile can access both
- # services/seq-interp/ and libs/lf-scanner/
- seq-interp:
- build:
- context: .
- dockerfile: services/seq-interp/Dockerfile
- image: lf-seq-interp:${SEQ_INTERP_VERSION:-dev}
- container_name: lf-seq-interp
- ports:
- - "${SEQ_INTERP_PORT:-7475}:7475"
- volumes:
- - seq_interp_input:/app/seq_interp/data/input
- - seq_interp_output:/app/seq_interp/data/output
- - seq_interp_logs:/app/seq_interp/log
- restart: unless-stopped
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:7475/health"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_period: 15s
- # ── Spectrometer hardware controller (DRF) ────────────────────────────────
- spectrometer:
- build:
- context: ./services/spectrometer
- dockerfile: Dockerfile
- image: lf-spectrometer:${SPECTROMETER_VERSION:-dev}
- container_name: lf-spectrometer
- ports:
- - "${SPECTROMETER_PORT:-8000}:8000"
- volumes:
- - spectrometer_db:/app/db
- restart: unless-stopped
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8000/api/"]
- interval: 15s
- timeout: 5s
- retries: 5
- start_period: 30s
- # ── MRI image reconstructor ────────────────────────────────────────────────
- reconstructor:
- build:
- context: ./services/reconstructor
- dockerfile: Dockerfile
- image: lf-reconstructor:${RECONSTRUCTOR_VERSION:-dev}
- container_name: lf-reconstructor
- ports:
- - "${RECONSTRUCTOR_PORT:-8081}:8000"
- volumes:
- - reconstructor_sessions:/app/sessions
- restart: unless-stopped
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_period: 20s
- # ── Spectroscopy signal processor ─────────────────────────────────────────
- spectroscopy:
- build:
- context: ./services/spectroscopy
- dockerfile: Dockerfile
- image: lf-spectroscopy:${SPECTROSCOPY_VERSION:-dev}
- container_name: lf-spectroscopy
- ports:
- - "${SPECTROSCOPY_PORT:-8002}:8002"
- environment:
- SERVICE_PORT: "8002"
- restart: unless-stopped
- healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:8002/health"]
- interval: 10s
- timeout: 5s
- retries: 5
- start_period: 15s
- volumes:
- seq_interp_input:
- seq_interp_output:
- seq_interp_logs:
- reconstructor_sessions:
- spectrometer_db:
|