services: redis: image: redis:7-alpine container_name: rampart-redis command: redis-server --requirepass "${REDIS_PASSWORD:-rampart_dev}" --appendonly yes ports: - "6379:6379" volumes: - redis-data:/data healthcheck: test: ["CMD", "redis-cli", "--raw", "incr", "ping"] interval: 5s timeout: 3s retries: 5 restart: unless-stopped clickhouse: image: clickhouse/clickhouse-server:24-alpine container_name: rampart-clickhouse ports: - "8123:8123" # HTTP - "9000:9000" # Native TCP volumes: - clickhouse-data:/var/lib/clickhouse - ./deploy/clickhouse/schema.sql:/docker-entrypoint-initdb.d/schema.sql:ro healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8123/ping"] interval: 10s timeout: 5s retries: 5 restart: unless-stopped grafana: image: grafana/grafana:latest container_name: rampart-grafana ports: - "3000:3000" environment: - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-admin} - GF_INSTALL_PLUGINS=grafana-clickhouse-datasource volumes: - grafana-data:/var/lib/grafana - ./deploy/grafana/datasources:/etc/grafana/provisioning/datasources:ro - ./deploy/grafana/dashboards:/etc/grafana/provisioning/dashboards:ro depends_on: - clickhouse restart: unless-stopped volumes: redis-data: clickhouse-data: grafana-data: