x-credentials: pb-email: &pb-email admin@propertymap.local pb-password: &pb-password propertymap-dev-2024 services: server: image: rust:1.84 tty: true stdin_open: true working_dir: /app/server-rs command: > bash -c " cargo install cargo-watch && cargo watch --poll -i logs/ -x 'run -- --properties /app/data/properties.parquet --postcode-features /app/data/postcode.parquet --pois /app/data/filtered_uk_pois.parquet --places /app/data/places.parquet --tiles /app/data/uk.pmtiles --postcodes /app/data/postcode_boundaries --travel-times /app/data/travel-times' " ports: - "8001:8001" networks: - dev-network cap_add: - IPC_LOCK ulimits: memlock: soft: -1 hard: -1 extra_hosts: - "host.docker.internal:host-gateway" volumes: - .:/app - cargo-home:/usr/local/cargo - cargo-target:/app/server-rs/target - ./property-data:/app/data:ro - ./property-data/travel-times:/app/data/travel-times:ro - ./finder/data:/app/finder-data:ro environment: POCKETBASE_URL: http://pocketbase:8090 POCKETBASE_ADMIN_EMAIL: *pb-email POCKETBASE_ADMIN_PASSWORD: *pb-password SCREENSHOT_URL: http://screenshot:8002 GEMINI_API_KEY: AIzaSyC2mQDcEwILHM3uOE2C-lxUQbQrKTX9Xi4 GEMINI_MODEL: gemini-3-flash-preview PUBLIC_URL: http://localhost:3001 GOOGLE_MAPS_API_KEY: "AIzaSyBgBn9LjrxHCjb9j1LZbLYpEdCJj-NkHPY" STRIPE_SECRET_KEY: sk_test_51SyVcePRjj2bdyn1HLkatQ5onwp8kamm41tjMcRdxXnJYWVPsVd9usMTOSNtNdGhrjbsrtNbgTdKXICg2qBiocEn00PvNDC0d3 STRIPE_WEBHOOK_SECRET: whsec_pIkGZblYlcN2VesTxq4pk1cDqdxOQ1y0 STRIPE_REFERRAL_COUPON_ID: L5uQqagl GOOGLE_OAUTH_CLIENT_ID: 536485512604-740bbn3tf027ogrdcr5sqor4ntorkaqv.apps.googleusercontent.com GOOGLE_OAUTH_CLIENT_SECRET: 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 BUGSINK_DSN: ${BUGSINK_DSN:-} FRONTEND_BUGSINK_DSN: ${FRONTEND_BUGSINK_DSN:-} BUGSINK_ENVIRONMENT: ${BUGSINK_ENVIRONMENT:-development} BUGSINK_RELEASE: ${BUGSINK_RELEASE:-} BUGSINK_SEND_DEFAULT_PII: ${BUGSINK_SEND_DEFAULT_PII:-false} ACTUAL_LISTINGS_PATH: /app/finder-data/online_listings_buy_filtered.parquet depends_on: screenshot: condition: service_healthy pocketbase: condition: service_healthy screenshot: init: true build: ./screenshot environment: PORT: "8002" APP_URL: http://frontend:3001 CACHE_DIR: /cache SCREENSHOT_CACHE_ENABLED: "false" SCREENSHOT_CONCURRENCY: "3" SCREENSHOT_RATE_WINDOW_MS: "60000" SCREENSHOT_RATE_LIMIT: "30" 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 frontend: init: true 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 CHOKIDAR_USEPOLLING: "true" CHOKIDAR_INTERVAL: "1000" WATCHPACK_POLLING: "1000" FRONTEND_BUGSINK_DSN: ${FRONTEND_BUGSINK_DSN:-} BUGSINK_ENVIRONMENT: ${BUGSINK_ENVIRONMENT:-development} BUGSINK_RELEASE: ${BUGSINK_RELEASE:-} BUGSINK_SEND_DEFAULT_PII: ${BUGSINK_SEND_DEFAULT_PII:-false} pocketbase: init: true image: ghcr.io/muchobien/pocketbase:latest ports: - "8090:8090" volumes: - pb-data:/pb/pb_data networks: - dev-network environment: PB_ADMIN_EMAIL: *pb-email PB_ADMIN_PASSWORD: *pb-password PB_TRUSTED_PROXY: server healthcheck: test: [ "CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8090/api/health", ] interval: 10s timeout: 5s retries: 3 start_period: 5s volumes: pb-data: cargo-home: cargo-target: frontend-node-modules: screenshot-cache: networks: dev-network: