services: garmin-coach-clone: build: . container_name: garmin-coach-clone ports: - "8080:8000" volumes: - garmin-coach-clone-data:/data environment: TZ: "${TZ:-Europe/Berlin}" APP_USERNAME: "${APP_USERNAME:-admin}" APP_PASSWORD: "${APP_PASSWORD:-change-me}" APP_SECRET_KEY: "${APP_SECRET_KEY:-replace-with-a-long-random-secret}" SYNC_ENABLED: "${SYNC_ENABLED:-true}" SYNC_DAYS_AHEAD: "${SYNC_DAYS_AHEAD:-1}" CLONE_PREFIX: "${CLONE_PREFIX:-GCClone}" OVERWRITE_EXISTING: "${OVERWRITE_EXISTING:-true}" DELETE_OLD_CLONES: "${DELETE_OLD_CLONES:-false}" CHANGE_DETECTION_INTERVAL_MINUTES: "${CHANGE_DETECTION_INTERVAL_MINUTES:-30}" CHANGE_DETECTION_ACTIVE_WINDOW: "${CHANGE_DETECTION_ACTIVE_WINDOW:-05:00-22:00}" CHANGE_DETECTION_FIXED_TIMES: "${CHANGE_DETECTION_FIXED_TIMES:-05:15,06:15,07:15,08:15,09:15,10:15,11:15,12:15,13:15}" LOG_LEVEL: "${LOG_LEVEL:-INFO}" DEBUG_DUMP_JSON: "${DEBUG_DUMP_JSON:-false}" restart: unless-stopped healthcheck: test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://127.0.0.1:8000/healthz', timeout=3)"] interval: 30s timeout: 5s retries: 3 volumes: garmin-coach-clone-data: