Bound each provider's startFetch()/resolveFetch() to an optional since/until window, wire a SQLite-backed ContributionStore into ContributionAggregator (fetch only the trailing window past the last stored date, merge into the store, prune by CONTRIBUTIONS_RETENTION_DAYS), and add a graph:contributions:refetch command to force a full or ranged re-fetch in <=365-day chunks. This is the root fix for the full 365-day-refetch timeout that used to hit on every cache miss.
39 lines
979 B
YAML
39 lines
979 B
YAML
services:
|
|
graph:
|
|
build:
|
|
context: .
|
|
target: final
|
|
container_name: git-contribution-graph
|
|
restart: unless-stopped
|
|
ports:
|
|
- "8080:8080"
|
|
environment:
|
|
APP_ENV: prod
|
|
APP_DEBUG: "0"
|
|
APP_SECRET: "${APP_SECRET}"
|
|
ALLOWED_HOSTS: "${ALLOWED_HOSTS:-}"
|
|
GITHUB_USER: "${GITHUB_USER:-}"
|
|
GITHUB_TOKEN: "${GITHUB_TOKEN:-}"
|
|
GITLAB_USER: "${GITLAB_USER:-}"
|
|
GITLAB_TOKEN: "${GITLAB_TOKEN:-}"
|
|
GITLAB_URL: "${GITLAB_URL:-}"
|
|
GITEA_USER: "${GITEA_USER:-}"
|
|
GITEA_TOKEN: "${GITEA_TOKEN:-}"
|
|
GITEA_URL: "${GITEA_URL:-}"
|
|
CONTRIBUTIONS_RETENTION_DAYS: "${CONTRIBUTIONS_RETENTION_DAYS:-0}"
|
|
volumes:
|
|
- cache:/app/var/cache/prod/pools
|
|
- logs:/app/var/log
|
|
- data:/app/var/data
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8080/health"]
|
|
interval: 30s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
|
|
volumes:
|
|
cache:
|
|
logs:
|
|
data:
|