fester/docker-compose.yml

88 lines
2.3 KiB
YAML

# docker-compose.yml for Fester
# ============================================================
# Quick start:
# docker-compose up -d
#
# Then open http://localhost:8080
#
# Volumes:
# fester-db — SQLite database (builds, sessions, events)
# fester-storage — snapshots, cache, CAS
# fester-config — config.yaml, storage.json, node_roles.json
# ============================================================
version: "3.8"
services:
fester:
build: .
image: fester:latest
container_name: fester
restart: unless-stopped
ports:
- "8080:8080"
volumes:
- fester-db:/var/lib/fester
- fester-storage:/var/lib/fester/storage
- fester-config:/etc/fester
- ./config.yaml:/app/config.yaml:ro
environment:
- FESTER_DB_PATH=/var/lib/fester/fester.db
- FESTER_CONFIG=/app/config.yaml
- FESTER_NO_DRIFT=0
- FESTER_AUTOBUILD=0
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8080/api/health"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
# Optional: MinIO for distributed cache
# Uncomment to enable
# minio:
# image: minio/minio:latest
# container_name: fester-minio
# restart: unless-stopped
# ports:
# - "9000:9000"
# - "9001:9001"
# volumes:
# - minio-data:/data
# environment:
# - MINIO_ROOT_USER=minioadmin
# - MINIO_ROOT_PASSWORD=minioadmin
# command: server /data --console-address ":9001"
# Optional: Prometheus scraper
# prometheus:
# image: prom/prometheus:latest
# container_name: fester-prometheus
# restart: unless-stopped
# ports:
# - "9090:9090"
# volumes:
# - ./add-to-prometheus-config.yml:/etc/prometheus/prometheus.yml:ro
# - prometheus-data:/prometheus
# Optional: Grafana dashboard
# grafana:
# image: grafana/grafana:latest
# container_name: fester-grafana
# restart: unless-stopped
# ports:
# - "3000:3000"
# volumes:
# - grafana-data:/var/lib/grafana
# - ./add-to-grafana-config.json:/etc/grafana/provisioning/dashboards/fester.json:ro
# environment:
# - GF_SECURITY_ADMIN_PASSWORD=admin
volumes:
fester-db:
fester-storage:
fester-config:
# minio-data:
# prometheus-data:
# grafana-data: