services: db: image: postgis/postgis:16-3.4 environment: POSTGRES_DB: ${GEOINTEL_POSTGRES_DB:-geointel} POSTGRES_USER: ${GEOINTEL_POSTGRES_USER:-geointel} POSTGRES_PASSWORD: ${GEOINTEL_POSTGRES_PASSWORD:-geointel} volumes: - geointel_postgis:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${GEOINTEL_POSTGRES_USER:-geointel} -d ${GEOINTEL_POSTGRES_DB:-geointel}"] interval: 5s timeout: 5s retries: 10 backend: build: context: ./backend args: GEOINTEL_INSTALL_AI: ${GEOINTEL_INSTALL_AI:-false} environment: DATABASE_URL: postgresql+psycopg://${GEOINTEL_POSTGRES_USER:-geointel}:${GEOINTEL_POSTGRES_PASSWORD:-geointel}@db:5432/${GEOINTEL_POSTGRES_DB:-geointel} STORAGE_ROOT: /app/storage CORS_ORIGINS: ${GEOINTEL_CORS_ORIGINS:-http://localhost:1202,http://127.0.0.1:1202} MAX_UPLOAD_MB: ${GEOINTEL_MAX_UPLOAD_MB:-500} YOLO_ENABLED: ${YOLO_ENABLED:-false} YOLO_MODELS_DIR: ${YOLO_MODELS_DIR:-/app/models} YOLO_MODEL_PATH: ${YOLO_MODEL_PATH:-} YOLO_MODEL_ID: ${YOLO_MODEL_ID:-yolo-configured} YOLO_MODEL_DISPLAY_NAME: ${YOLO_MODEL_DISPLAY_NAME:-Configured YOLO detector} YOLO_MODEL_VERSION: ${YOLO_MODEL_VERSION:-} YOLO_CONFIG_DIR: ${YOLO_CONFIG_DIR:-/app/storage/ultralytics} YOLO_DEVICE: ${YOLO_DEVICE:-cpu} YOLO_IMAGE_SIZE: ${YOLO_IMAGE_SIZE:-640} YOLO_MAX_TILES: ${YOLO_MAX_TILES:-100} YOLO_BATCH_SIZE: ${YOLO_BATCH_SIZE:-1} ports: - "${GEOINTEL_BACKEND_PORT:-8000}:8000" volumes: - ${GEOINTEL_STORAGE_PATH:-./storage}:/app/storage - ${GEOINTEL_MODELS_PATH:-./models}:/app/models - ./fixtures:/app/fixtures:ro command: sh /app/docker_start.sh depends_on: db: condition: service_healthy healthcheck: test: ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/health', timeout=5).read()\""] interval: 10s timeout: 5s retries: 12 start_period: 30s frontend: build: context: ./frontend ports: - "${GEOINTEL_FRONTEND_PORT:-1202}:80" depends_on: backend: condition: service_healthy healthcheck: test: ["CMD-SHELL", "wget -q -O - http://127.0.0.1/health | grep -q '\"status\"'"] interval: 10s timeout: 5s retries: 12 start_period: 10s volumes: geointel_postgis: