version: '3.8'
services:
redis:
image: redis:7-alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 5
command: ["redis-server", "--appendonly", "yes"]
# Test runner service for integration testing
test-runner:
build:
context: ../..
dockerfile: docker/images/test/Dockerfile
depends_on:
redis:
condition: service_healthy
environment:
REDIS_URL: "redis://redis:6379"
DATABASE_URL: "sqlite::memory:"
ENCRYPTION_KEY: "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2"
RUST_LOG: debug
volumes:
- .:/app
working_dir: /app
command: ["cargo", "test", "--test", "cache_redis_test", "--", "--test-threads=1"]
# Optional: Redis Commander for cache management
redis-commander:
image: rediscommander/redis-commander:latest
environment:
REDIS_HOSTS: local:redis:6379
ports:
- "8081:8081"
depends_on:
- redis
profiles:
- admin
volumes:
redis_data: