services: db: image: timescale/timescaledb:latest-pg14 environment: POSTGRES_DB: ${POSTGRES_DB} POSTGRES_USER: ${POSTGRES_USER} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD} TZ: UTC PGTZ: UTC ports: - "${DB_PORT:-9500}:5432" volumes: - ./db/data:/var/lib/postgresql/data - ./db/init:/docker-entrypoint-initdb.d:ro restart: unless-stopped api: build: ./api environment: DATABASE_URL: ${DATABASE_URL} CORS_ORIGINS: ${CORS_ORIGINS} LLM_BASE_URL: ${LLM_BASE_URL} LLM_MODEL: ${LLM_MODEL} LLM_TIMEOUT: ${LLM_TIMEOUT} LLM_MAX_STATIONS: ${LLM_MAX_STATIONS} ports: - "${API_PORT:-9501}:8000" depends_on: - db restart: unless-stopped worker: build: ./worker environment: DATABASE_URL: ${DATABASE_URL} POLL_SECONDS: ${POLL_SECONDS} WAQI_TOKEN: ${WAQI_TOKEN} WAQI_BASE_URL: ${WAQI_BASE_URL} BBOX_LAT1: ${BBOX_LAT1} BBOX_LON1: ${BBOX_LON1} BBOX_LAT2: ${BBOX_LAT2} BBOX_LON2: ${BBOX_LON2} DETECT_DELAY_MINUTES: ${DETECT_DELAY_MINUTES} DETECT_STUCK_MINUTES: ${DETECT_STUCK_MINUTES} DETECT_SPIKE_DELTA: ${DETECT_SPIKE_DELTA} DETECT_SPIKE_WINDOW_MINUTES: ${DETECT_SPIKE_WINDOW_MINUTES} DETECT_DEDUP_MINUTES: ${DETECT_DEDUP_MINUTES} depends_on: - db restart: unless-stopped