services: server: image: rust:1.84 working_dir: /app/server-rs command: > bash -c " cargo install cargo-watch && cargo watch -x 'run -- --data /app/data/wide.parquet --pois /app/data/filtered_uk_pois.parquet --tiles /app/data/uk.pmtiles --postcodes /app/data/postcode_boundaries' " ports: - "8001:8001" networks: - dev-network extra_hosts: - "host.docker.internal:host-gateway" volumes: - .:/app - cargo-registry:/usr/local/cargo/registry - cargo-target:/app/server-rs/target - ./property-data:/app/data:ro environment: POCKETBASE_URL: http://pocketbase:8090 SCREENSHOT_URL: http://screenshot:8002 OLLAMA_URL: http://host.docker.internal:11434 R5_URL: http://r5:8003 depends_on: pocketbase: condition: service_healthy screenshot: build: /volumes/syncthing/Projects/property-map/screenshot environment: APP_URL: http://frontend:3001 CACHE_DIR: /cache volumes: - screenshot-cache:/cache networks: - dev-network healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8002/health"] interval: 10s timeout: 5s retries: 3 start_period: 30s deploy: resources: reservations: devices: - driver: nvidia capabilities: [ gpu ] count: 1 frontend: image: node:22-slim working_dir: /app/frontend command: > bash -c " npm install && npm run dev " ports: - "3001:3001" networks: - dev-network volumes: - .:/app - frontend-node-modules:/app/frontend/node_modules environment: API_PROXY_TARGET: http://server:8001 PB_PROXY_TARGET: http://pocketbase:8090 pocketbase: image: ghcr.io/muchobien/pocketbase:latest ports: - "8090:8090" volumes: - pb-data:/pb/pb_data networks: - dev-network healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8090/api/health"] interval: 10s timeout: 5s retries: 3 start_period: 5s r5: build: ./r5-service ports: - "8003:8003" networks: - dev-network volumes: - ./property-data/transit:/data/transit - r5-cache:/root/.cache/r5py environment: TRANSIT_DATA_DIR: /data/transit healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8003/health"] interval: 10s timeout: 5s retries: 3 start_period: 600s init: true volumes: pb-data: cargo-registry: cargo-target: frontend-node-modules: screenshot-cache: r5-cache: networks: dev-network: