name: x0gp-dev # Dev stack for the PoC. Mirrors what Coolify will provision on the Orange # Pi 5 Pro. Services run on a private network; only the api-gateway is # published to localhost. # # Usage: # make compose-up # make compose-down # # Notes: # - All images use linux/arm64 by default (Orange Pi 5 Pro). Override with # --platform=linux/amd64 if you're on x86. # - Persistent volumes: postgres-data, redis-data, prom-data, grafana-data. # - On a fresh install, run `make proto` first to generate proto/gen/. services: postgres: image: timescale/timescaledb:latest-pg16 restart: unless-stopped platform: linux/arm64 environment: POSTGRES_USER: x0gp POSTGRES_PASSWORD: x0gp POSTGRES_DB: x0gp volumes: - postgres-data:/var/lib/postgresql/data ports: - "127.0.0.1:5434:5432" healthcheck: test: ["CMD-SHELL", "pg_isready -U x0gp"] interval: 5s timeout: 3s retries: 10 redis: image: redis:7-alpine restart: unless-stopped command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru volumes: - redis-data:/data ports: - "127.0.0.1:6379:6379" api-gateway: build: context: . dockerfile: Dockerfile args: GOARCH: arm64 CMD: poc-server restart: unless-stopped depends_on: postgres: condition: service_healthy redis: condition: service_started environment: X0GP_HTTP_ADDR: ":8080" X0GP_TICK_RATE: "60" X0GP_SNAPSHOT_RATE: "30" X0GP_LOG_LEVEL: "info" X0GP_DEV_MODE: "true" DATABASE_URL: "postgres://x0gp:x0gp@postgres:5432/x0gp?sslmode=disable" REDIS_URL: "redis://redis:6379" ports: - "127.0.0.1:8080:8080" prometheus: image: prom/prometheus:latest restart: unless-stopped volumes: - ./deploy/prometheus.yml:/etc/prometheus/prometheus.yml:ro - prom-data:/prometheus ports: - "127.0.0.1:9090:9090" grafana: image: grafana/grafana:latest restart: unless-stopped volumes: - grafana-data:/var/lib/grafana ports: - "127.0.0.1:3000:3000" volumes: postgres-data: redis-data: prom-data: grafana-data: