version: '3.8' services: predictor: build: context: . dockerfile: Dockerfile container_name: predictor ports: - "8080:8080" environment: # --- GRIB Configuration --- - GSN_PREDICTOR_GRIB_DIR=/tmp/grib - GSN_PREDICTOR_GRIB_TTL=24h - GSN_PREDICTOR_GRIB_CACHE_TTL=1h - GSN_PREDICTOR_GRIB_PARALLEL=4 - GSN_PREDICTOR_GRIB_TIMEOUT=30s - GSN_PREDICTOR_GRIB_DATASET_URL=https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod # --- Redis Configuration --- - GSN_PREDICTOR_REDIS_HOST=redis - GSN_PREDICTOR_REDIS_PORT=6379 - GSN_PREDICTOR_REDIS_PASSWORD= - GSN_PREDICTOR_REDIS_DB=0 # --- Scheduler Configuration --- - GSN_PREDICTOR_SCHEDULER_ENABLED=true # --- GRIB Updater Job Configuration --- - GSN_PREDICTOR_GRIB_UPDATER_INTERVAL=6h - GSN_PREDICTOR_GRIB_UPDATER_TIMEOUT=45m # --- REST Transport Configuration --- - GSN_PREDICTOR_REST_HOST=0.0.0.0 - GSN_PREDICTOR_REST_PORT=8080 - GSN_PREDICTOR_REST_READ_TIMEOUT=30s - GSN_PREDICTOR_REST_WRITE_TIMEOUT=30s - GSN_PREDICTOR_REST_IDLE_TIMEOUT=60s volumes: - ./grib_data:/tmp/grib depends_on: redis: condition: service_healthy networks: - predictor-network restart: unless-stopped healthcheck: test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://localhost:8080/ready"] interval: 30s timeout: 10s retries: 3 start_period: 40s redis: image: redis:7.2-alpine container_name: predictor-redis ports: - "6379:6379" volumes: - redis_data:/data networks: - predictor-network restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 3s retries: 5 start_period: 10s command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru volumes: redis_data: driver: local networks: predictor-network: driver: bridge