mirror of
https://github.com/Dvorinka/Trackeep.git
synced 2026-06-03 20:12:58 +00:00
083373a24f
- Add Redis architecture implementation - Update browser extension functionality - Clean up deprecated files and documentation - Enhance backend handlers for auth, messages, search - Add new configuration options and settings - Update Docker and deployment configurations
167 lines
4.9 KiB
YAML
167 lines
4.9 KiB
YAML
# Docker Compose Override for Redis Support
|
|
#
|
|
# This file extends the base docker-compose.yml with Redis services.
|
|
#
|
|
# Usage:
|
|
# docker-compose -f docker-compose.yml -f docker-compose.redis.yml up -d
|
|
#
|
|
# Or merge into your main docker-compose.yml
|
|
|
|
version: '3.8'
|
|
|
|
services:
|
|
# Redis service for caching, sessions, and rate limiting
|
|
redis:
|
|
image: redis:7-alpine
|
|
container_name: trackeep-redis
|
|
restart: unless-stopped
|
|
volumes:
|
|
- redis_data:/data
|
|
- ./redis.conf:/usr/local/etc/redis/redis.conf:ro
|
|
command: >
|
|
sh -c "redis-server /usr/local/etc/redis/redis.conf
|
|
--requirepass $${REDIS_PASSWORD:-changeme}"
|
|
environment:
|
|
- REDIS_PASSWORD=${REDIS_PASSWORD:-changeme}
|
|
networks:
|
|
- trackeep-network
|
|
healthcheck:
|
|
test: ["CMD", "redis-cli", "-a", "${REDIS_PASSWORD:-changeme}", "ping"]
|
|
interval: 10s
|
|
timeout: 5s
|
|
retries: 3
|
|
start_period: 10s
|
|
# Security: Only expose to internal network, not external
|
|
# ports:
|
|
# - "127.0.0.1:6379:6379" # Uncomment for local debugging only
|
|
labels:
|
|
- "traefik.enable=false"
|
|
deploy:
|
|
resources:
|
|
limits:
|
|
memory: 512M
|
|
reservations:
|
|
memory: 128M
|
|
|
|
# Backend service with Redis environment variables
|
|
trackeep-backend:
|
|
environment:
|
|
# Redis Configuration
|
|
- REDIS_ADDR=${REDIS_ADDR:-redis:6379}
|
|
- REDIS_PASSWORD=${REDIS_PASSWORD}
|
|
- REDIS_DB=${REDIS_DB:-0}
|
|
- REDIS_POOL_SIZE=${REDIS_POOL_SIZE:-20}
|
|
- REDIS_DIAL_TIMEOUT=${REDIS_DIAL_TIMEOUT:-5s}
|
|
- REDIS_READ_TIMEOUT=${REDIS_READ_TIMEOUT:-3s}
|
|
- REDIS_WRITE_TIMEOUT=${REDIS_WRITE_TIMEOUT:-3s}
|
|
# Feature Flags
|
|
- REDIS_SESSIONS_ENABLED=${REDIS_SESSIONS_ENABLED:-true}
|
|
- REDIS_CACHE_ENABLED=${REDIS_CACHE_ENABLED:-true}
|
|
- REDIS_RATELIMIT_ENABLED=${REDIS_RATELIMIT_ENABLED:-true}
|
|
- REDIS_PUBSUB_ENABLED=${REDIS_PUBSUB_ENABLED:-true}
|
|
depends_on:
|
|
redis:
|
|
condition: service_healthy
|
|
postgres:
|
|
condition: service_healthy
|
|
|
|
# Redis Commander - Optional Redis management UI
|
|
# Uncomment to enable web-based Redis management at http://localhost:8081
|
|
# redis-commander:
|
|
# image: rediscommander/redis-commander:latest
|
|
# container_name: trackeep-redis-commander
|
|
# restart: unless-stopped
|
|
# environment:
|
|
# - REDIS_HOST=redis
|
|
# - REDIS_PORT=6379
|
|
# - REDIS_PASSWORD=${REDIS_PASSWORD}
|
|
# ports:
|
|
# - "127.0.0.1:8081:8081"
|
|
# networks:
|
|
# - trackeep-network
|
|
# depends_on:
|
|
# - redis
|
|
|
|
volumes:
|
|
# Redis persistent data volume
|
|
redis_data:
|
|
driver: local
|
|
|
|
networks:
|
|
trackeep-network:
|
|
driver: bridge
|
|
|
|
# =============================================================================
|
|
# REDIS SENTINEL CONFIGURATION (For High Availability)
|
|
# =============================================================================
|
|
# Uncomment this section and comment out the single Redis instance above
|
|
# to enable Redis Sentinel for automatic failover
|
|
#
|
|
# services:
|
|
# redis-master:
|
|
# image: redis:7-alpine
|
|
# container_name: trackeep-redis-master
|
|
# volumes:
|
|
# - redis_master_data:/data
|
|
# command: >
|
|
# sh -c "redis-server
|
|
# --appendonly yes
|
|
# --maxmemory 256mb
|
|
# --maxmemory-policy allkeys-lru
|
|
# --requirepass $${REDIS_PASSWORD}"
|
|
# networks:
|
|
# - trackeep-network
|
|
#
|
|
# redis-replica-1:
|
|
# image: redis:7-alpine
|
|
# container_name: trackeep-redis-replica-1
|
|
# volumes:
|
|
# - redis_replica1_data:/data
|
|
# command: >
|
|
# sh -c "redis-server
|
|
# --appendonly yes
|
|
# --replicaof redis-master 6379
|
|
# --masterauth $${REDIS_PASSWORD}
|
|
# --requirepass $${REDIS_PASSWORD}"
|
|
# networks:
|
|
# - trackeep-network
|
|
# depends_on:
|
|
# - redis-master
|
|
#
|
|
# redis-replica-2:
|
|
# image: redis:7-alpine
|
|
# container_name: trackeep-redis-replica-2
|
|
# volumes:
|
|
# - redis_replica2_data:/data
|
|
# command: >
|
|
# sh -c "redis-server
|
|
# --appendonly yes
|
|
# --replicaof redis-master 6379
|
|
# --masterauth $${REDIS_PASSWORD}
|
|
# --requirepass $${REDIS_PASSWORD}"
|
|
# networks:
|
|
# - trackeep-network
|
|
# depends_on:
|
|
# - redis-master
|
|
#
|
|
# redis-sentinel-1:
|
|
# image: redis:7-alpine
|
|
# container_name: trackeep-sentinel-1
|
|
# command: >
|
|
# sh -c "echo 'sentinel monitor mymaster redis-master 6379 2' > /etc/sentinel.conf &&
|
|
# echo 'sentinel auth-pass mymaster $${REDIS_PASSWORD}' >> /etc/sentinel.conf &&
|
|
# echo 'sentinel down-after-milliseconds mymaster 5000' >> /etc/sentinel.conf &&
|
|
# echo 'sentinel failover-timeout mymaster 60000' >> /etc/sentinel.conf &&
|
|
# redis-sentinel /etc/sentinel.conf"
|
|
# networks:
|
|
# - trackeep-network
|
|
# depends_on:
|
|
# - redis-master
|
|
# - redis-replica-1
|
|
# - redis-replica-2
|
|
#
|
|
# volumes:
|
|
# redis_master_data:
|
|
# redis_replica1_data:
|
|
# redis_replica2_data:
|