version: '3.8' services: identity-service: build: context: . dockerfile: Dockerfile container_name: identity-service ports: - '3000:3000' environment: - NODE_ENV=production - PORT=3000 - DATABASE_URL=postgresql://postgres:postgres@postgres:5432/identity_db?schema=public - REDIS_HOST=redis - REDIS_PORT=6379 - JWT_SECRET=${JWT_SECRET:-your-super-secret-key-change-in-production} - JWT_ACCESS_EXPIRATION=2h - JWT_REFRESH_EXPIRATION=30d - KAFKA_BROKERS=kafka:29092 - KAFKA_CLIENT_ID=identity-service - KAFKA_GROUP_ID=identity-service-group - WALLET_ENCRYPTION_SALT=${WALLET_ENCRYPTION_SALT:-rwa-wallet-salt} depends_on: postgres: condition: service_healthy redis: condition: service_healthy kafka: condition: service_started networks: - rwa-network restart: unless-stopped postgres: image: postgres:15-alpine container_name: identity-postgres ports: - '5432:5432' environment: - POSTGRES_USER=postgres - POSTGRES_PASSWORD=postgres - POSTGRES_DB=identity_db volumes: - postgres-data:/var/lib/postgresql/data healthcheck: test: ['CMD-SHELL', 'pg_isready -U postgres'] interval: 10s timeout: 5s retries: 5 networks: - rwa-network redis: image: redis:7-alpine container_name: identity-redis ports: - '6379:6379' volumes: - redis-data:/data healthcheck: test: ['CMD', 'redis-cli', 'ping'] interval: 10s timeout: 5s retries: 5 networks: - rwa-network zookeeper: image: confluentinc/cp-zookeeper:7.5.0 container_name: identity-zookeeper environment: ZOOKEEPER_CLIENT_PORT: 2181 ZOOKEEPER_TICK_TIME: 2000 volumes: - zookeeper-data:/var/lib/zookeeper/data - zookeeper-logs:/var/lib/zookeeper/log networks: - rwa-network kafka: image: confluentinc/cp-kafka:7.5.0 container_name: identity-kafka depends_on: - zookeeper ports: - '9092:9092' environment: KAFKA_BROKER_ID: 1 KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092 KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1 KAFKA_AUTO_CREATE_TOPICS_ENABLE: 'true' KAFKA_LOG_RETENTION_HOURS: 168 volumes: - kafka-data:/var/lib/kafka/data networks: - rwa-network kafka-ui: image: provectuslabs/kafka-ui:latest container_name: identity-kafka-ui ports: - '8080:8080' environment: KAFKA_CLUSTERS_0_NAME: identity-cluster KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS: kafka:29092 KAFKA_CLUSTERS_0_ZOOKEEPER: zookeeper:2181 depends_on: - kafka networks: - rwa-network volumes: postgres-data: redis-data: zookeeper-data: zookeeper-logs: kafka-data: networks: rwa-network: driver: bridge