version: '3.8' services: identity-service: build: . ports: - "3000:3000" environment: - DATABASE_URL=mysql://root:password@mysql:3306/rwa_identity - JWT_SECRET=your-super-secret-jwt-key-change-in-production - JWT_ACCESS_EXPIRES_IN=2h - JWT_REFRESH_EXPIRES_IN=30d - REDIS_HOST=redis - REDIS_PORT=6379 - KAFKA_BROKERS=kafka:9092 - APP_PORT=3000 - APP_ENV=production depends_on: mysql: condition: service_healthy redis: condition: service_started kafka: condition: service_started mysql: image: mysql:8.0 environment: - MYSQL_ROOT_PASSWORD=password - MYSQL_DATABASE=rwa_identity ports: - "3306:3306" volumes: - mysql_data:/var/lib/mysql healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 5s retries: 10 redis: image: redis:7-alpine ports: - "6379:6379" volumes: - redis_data:/data zookeeper: image: confluentinc/cp-zookeeper:7.5.0 environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 kafka: image: confluentinc/cp-kafka:7.5.0 depends_on: - zookeeper ports: - "9092:9092" environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 volumes: mysql_data: redis_data: