# ============================================================================= # ISEM Workspace - Development Docker Compose # ============================================================================= # Shared infrastructure services for all projects # # Usage: # docker-compose up -d # Start all services # docker-compose up -d postgres # Start only PostgreSQL # docker-compose logs -f # View logs # docker-compose down # Stop all services # ============================================================================= version: '3.8' services: # =========================================================================== # PostgreSQL - Multi-database instance # =========================================================================== postgres: image: postgres:15-alpine container_name: isem-postgres restart: unless-stopped ports: - "5432:5432" environment: POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres_dev_2024 POSTGRES_MULTIPLE_DATABASES: gamilit_dev,trading_dev,erp_dev,mecanicas_dev volumes: - postgres_data:/var/lib/postgresql/data - ./devtools/docker/postgres-init:/docker-entrypoint-initdb.d:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 networks: - isem-network # =========================================================================== # Redis - Cache and sessions # =========================================================================== redis: image: redis:7-alpine container_name: isem-redis restart: unless-stopped ports: - "6379:6379" command: redis-server --appendonly yes --maxmemory 256mb --maxmemory-policy allkeys-lru volumes: - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 networks: - isem-network # =========================================================================== # TimescaleDB - Time-series data for Trading Platform # =========================================================================== timescaledb: image: timescale/timescaledb:latest-pg15 container_name: isem-timescaledb restart: unless-stopped ports: - "5433:5432" environment: POSTGRES_USER: trading_user POSTGRES_PASSWORD: trading_dev_2024 POSTGRES_DB: orbiquant_trading volumes: - timescale_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U trading_user -d orbiquant_trading"] interval: 10s timeout: 5s retries: 5 networks: - isem-network # =========================================================================== # MinIO - S3-compatible object storage # =========================================================================== minio: image: minio/minio:latest container_name: isem-minio restart: unless-stopped ports: - "9000:9000" - "9001:9001" environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin123 command: server /data --console-address ":9001" volumes: - minio_data:/data healthcheck: test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"] interval: 30s timeout: 20s retries: 3 networks: - isem-network # =========================================================================== # Mailhog - Email testing # =========================================================================== mailhog: image: mailhog/mailhog:latest container_name: isem-mailhog restart: unless-stopped ports: - "1025:1025" # SMTP - "8025:8025" # Web UI networks: - isem-network # =========================================================================== # Adminer - Database management UI # =========================================================================== adminer: image: adminer:latest container_name: isem-adminer restart: unless-stopped ports: - "8080:8080" environment: ADMINER_DEFAULT_SERVER: postgres networks: - isem-network depends_on: - postgres networks: isem-network: driver: bridge name: isem-network volumes: postgres_data: redis_data: timescale_data: minio_data: