# Local Development with Docker # Usage: docker-compose -f docker-compose.local.yml up -d version: '3.8' services: # ============================================================================= # CORE LAYER - Falah OS Services # ============================================================================= # Ummah ID - Sovereign Identity Service ummahid: build: context: ./docker/services/ummahid dockerfile: Dockerfile container_name: falah-ummahid ports: - "3001:3000" environment: - NODE_ENV=development - SERVICE_NAME=ummahid - REDIS_URL=redis://redis:6379 - DATABASE_URL=postgresql://postgres:falahdev@postgres:5432/falahid - JWT_SECRET=dev_jwt_secret_change_in_production - ENCRYPTION_KEY=dev_encryption_key_change_in_production depends_on: - postgres - redis networks: - falah-dev-network restart: unless-stopped # Wallet Service - FLH Currency Management wallet: build: context: ./docker/services/wallet dockerfile: Dockerfile container_name: falah-wallet ports: - "3002:3000" environment: - NODE_ENV=development - SERVICE_NAME=wallet - REDIS_URL=redis://redis:6379 - DATABASE_URL=postgresql://postgres:falahdev@postgres:5432/falahwallet - MOCKNET_URL=http://mocknet:3000 - PROTOCOL_FEE_PERCENT=1.5 depends_on: - postgres - redis - ummahid networks: - falah-dev-network restart: unless-stopped # RAMZ Contract Engine - Shariah-Compliant Smart Contracts ramz: build: context: ./docker/services/ramz dockerfile: Dockerfile container_name: falah-ramz ports: - "3003:3000" environment: - NODE_ENV=development - SERVICE_NAME=ramz - REDIS_URL=redis://redis:6379 - DATABASE_URL=postgresql://postgres:falahdev@postgres:5432/falahramz - SHARIAH_RULES=NO_RIBA,NO_GHARAR,NO_MAYSIR,HALAL_COMMODITY,ASSET_BACKED,MUTUAL_CONSENT,NO_BAI_INAH depends_on: - postgres - redis - ummahid - wallet networks: - falah-dev-network restart: unless-stopped # Mock-Net Sandbox - Digital Twin Environment mocknet: build: context: ./docker/services/mocknet dockerfile: Dockerfile container_name: falah-mocknet ports: - "3004:3000" environment: - NODE_ENV=development - SERVICE_NAME=mocknet - REDIS_URL=redis://redis:6379 - DATABASE_URL=postgresql://postgres:falahdev@postgres:5432/falahmock - ENABLE_CHAOS_TESTING=true depends_on: - postgres - redis networks: - falah-dev-network restart: unless-stopped # ============================================================================= # API GATEWAY # ============================================================================= api-gateway: build: context: ./docker/services/api-gateway dockerfile: Dockerfile container_name: falah-api-gateway ports: - "3000:3000" environment: - NODE_ENV=development - SERVICE_NAME=api-gateway - REDIS_URL=redis://redis:6379 - UMMAHID_URL=http://ummahid:3000 - WALLET_URL=http://wallet:3000 - RAMZ_URL=http://ramz:3000 - MOCKNET_URL=http://mocknet:3000 depends_on: - redis - ummahid - wallet - ramz networks: - falah-dev-network restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:3000/health"] interval: 30s timeout: 10s retries: 3 # ============================================================================= # DATA LAYER # ============================================================================= postgres: image: postgres:16-alpine container_name: falah-postgres-dev ports: - "5432:5432" environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=falahdev - POSTGRES_DB=falahdb volumes: - postgres-dev-data:/var/lib/postgresql/data - ./docker/infrastructure/postgres/init.sql:/docker-entrypoint-initdb.d/init.sql networks: - falah-dev-network restart: unless-stopped healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 10s timeout: 5s retries: 5 redis: image: redis:7-alpine container_name: falah-redis-dev ports: - "6379:6379" volumes: - redis-dev-data:/data networks: - falah-dev-network restart: unless-stopped healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 10s timeout: 5s retries: 5 command: redis-server --appendonly yes # ============================================================================= # FRONTEND (Netlify Dev) # ============================================================================= # Uncomment for local frontend development # frontend: # image: node:20-alpine # working_dir: /app # command: sh -c "npm install -g netlify-cli && netlify dev" # volumes: # - .:/app # ports: # - "8888:8888" # - "1313:1313" # networks: # - falah-dev-network volumes: postgres-dev-data: driver: local redis-dev-data: driver: local networks: falah-dev-network: driver: bridge ipam: config: - subnet: 172.30.0.0/16