Reaper MCP Server
by dschuler36
- test
version: '3.8'
services:
web:
build:
context: ..
dockerfile: Dockerfile
ports:
- "${APP_PORT}:8000"
volumes:
- ..:/app
- ../logs:/app/logs
env_file:
- .env
environment:
PYTHONPATH: /app
PYTHONUNBUFFERED: 1
command: uvicorn app.main:app --host 0.0.0.0 --port 8000 --reload
depends_on:
db:
condition: service_healthy
elasticsearch:
condition: service_healthy
kafka:
condition: service_healthy
networks:
- test_network
db:
image: postgres:15
volumes:
- postgres_test_data:/var/lib/postgresql/data
env_file:
- .env
ports:
- "${POSTGRES_PORT}:5432"
healthcheck:
test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER} -d ${POSTGRES_DB}"]
interval: 10s
timeout: 5s
retries: 5
networks:
- test_network
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.11.0
volumes:
- es_test_data:/usr/share/elasticsearch/data
env_file:
- .env
ports:
- "${ES_PORT}:9200"
environment:
- discovery.type=single-node
- xpack.security.enabled=false
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
networks:
- test_network
healthcheck:
test: ["CMD-SHELL", "curl -s http://localhost:9200/_cluster/health | grep -q 'status.*green'"]
interval: 30s
timeout: 30s
retries: 3
kafka:
image: confluentinc/cp-kafka:7.5.0
depends_on:
zookeeper:
condition: service_healthy
env_file:
- .env
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:${KAFKA_PORT}
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
networks:
- test_network
healthcheck:
test: ["CMD-SHELL", "kafka-topics.sh --bootstrap-server kafka:9092 --list"]
interval: 30s
timeout: 10s
retries: 3
zookeeper:
image: confluentinc/cp-zookeeper:7.5.0
volumes:
- zookeeper_test_data:/var/lib/zookeeper/data
env_file:
- .env
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
networks:
- test_network
healthcheck:
test: ["CMD-SHELL", "echo srvr | nc localhost 2181 || exit 1"]
interval: 10s
timeout: 5s
retries: 3
grafana:
image: grafana/grafana:10.2.0
volumes:
- grafana_test_data:/var/lib/grafana
- ../config/grafana/provisioning:/etc/grafana/provisioning
- ../config/grafana/dashboards:/var/lib/grafana/dashboards
env_file:
- .env
ports:
- "${GRAFANA_PORT}:3000"
networks:
- test_network
depends_on:
prometheus:
condition: service_healthy
prometheus:
image: prom/prometheus:v2.48.0
volumes:
- prometheus_test_data:/prometheus
- ../config/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml
- ../config/prometheus/rules:/etc/prometheus/rules
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
env_file:
- .env
ports:
- "${PROMETHEUS_PORT}:9090"
networks:
- test_network
healthcheck:
test: ["CMD", "wget", "-q", "--tries=1", "http://localhost:9090/-/healthy", "-O", "/dev/null"]
interval: 30s
timeout: 10s
retries: 3
networks:
test_network:
driver: bridge
volumes:
postgres_test_data:
es_test_data:
zookeeper_test_data:
grafana_test_data:
prometheus_test_data: