Files
notifier/docker-compose.yaml
T

95 lines
2.3 KiB
YAML

version: '3.8'
services:
notifier:
build:
context: .
dockerfile: Dockerfile
container_name: notifier
ports:
- "8080:8080" # REST API
- "50051:50051" # gRPC
- "9090:9090" # Metrics (future)
- "8081:8081" # Health check (future)
volumes:
- ./config.yaml:/app/config.yaml:ro
- notifier-data:/var/lib/notifier
environment:
- NOTIFIER_SERVER_MODE=both
- NOTIFIER_LOGGING_LEVEL=info
restart: unless-stopped
networks:
- notifier-net
healthcheck:
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:8080/health"]
interval: 30s
timeout: 10s
retries: 3
start_period: 10s
# Optional: Kafka for distributed queue
# kafka:
# image: confluentinc/cp-kafka:latest
# container_name: kafka
# ports:
# - "9092:9092"
# environment:
# KAFKA_BROKER_ID: 1
# KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
# KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092
# KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
# depends_on:
# - zookeeper
# networks:
# - notifier-net
# zookeeper:
# image: confluentinc/cp-zookeeper:latest
# container_name: zookeeper
# ports:
# - "2181:2181"
# environment:
# ZOOKEEPER_CLIENT_PORT: 2181
# ZOOKEEPER_TICK_TIME: 2000
# networks:
# - notifier-net
# Optional: Prometheus for metrics collection
# prometheus:
# image: prom/prometheus:latest
# container_name: prometheus
# ports:
# - "9091:9090"
# volumes:
# - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
# - prometheus-data:/prometheus
# command:
# - '--config.file=/etc/prometheus/prometheus.yml'
# - '--storage.tsdb.path=/prometheus'
# networks:
# - notifier-net
# Optional: Grafana for visualization
# grafana:
# image: grafana/grafana:latest
# container_name: grafana
# ports:
# - "3000:3000"
# environment:
# - GF_SECURITY_ADMIN_PASSWORD=admin
# volumes:
# - grafana-data:/var/lib/grafana
# depends_on:
# - prometheus
# networks:
# - notifier-net
networks:
notifier-net:
driver: bridge
volumes:
notifier-data:
# prometheus-data:
# grafana-data: