services: # PostgreSQL Database postgres: image: postgres:14-alpine container_name: marketing_postgres environment: POSTGRES_USER: marketing_user POSTGRES_PASSWORD: marketing_pass POSTGRES_DB: marketing_agent ports: - "5433:5432" volumes: - postgres_data:/var/lib/postgresql/data networks: - marketing_network # MongoDB for Events mongodb: image: mongo:5-focal container_name: marketing_mongodb ports: - "27018:27017" volumes: - mongodb_data:/data/db networks: - marketing_network # Redis for Cache and Queue redis: image: redis:7-alpine container_name: marketing_redis command: redis-server --appendonly yes volumes: - redis_data:/data networks: - marketing_network # RabbitMQ Message Broker rabbitmq: image: rabbitmq:3-management-alpine container_name: marketing_rabbitmq environment: RABBITMQ_DEFAULT_USER: admin RABBITMQ_DEFAULT_PASS: admin ports: - "5673:5672" - "15673:15672" volumes: - rabbitmq_data:/var/lib/rabbitmq networks: - marketing_network # Elasticsearch elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:8.12.0 container_name: marketing_elasticsearch environment: - discovery.type=single-node - xpack.security.enabled=false - "ES_JAVA_OPTS=-Xms512m -Xmx512m" ports: - "9201:9200" volumes: - elasticsearch_data:/usr/share/elasticsearch/data networks: - marketing_network # Prometheus prometheus: image: prom/prometheus:latest container_name: marketing_prometheus command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' ports: - "9090:9090" volumes: - ./infrastructure/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml - prometheus_data:/prometheus networks: - marketing_network # Grafana grafana: image: grafana/grafana:latest container_name: marketing_grafana environment: - GF_SECURITY_ADMIN_PASSWORD=admin - GF_USERS_ALLOW_SIGN_UP=false ports: - "3032:3000" volumes: - grafana_data:/var/lib/grafana - ./infrastructure/grafana/provisioning:/etc/grafana/provisioning depends_on: - prometheus networks: - marketing_network # API Gateway Service api-gateway: build: ./services/api-gateway container_name: marketing_api_gateway ports: - "3030:3000" environment: - NODE_ENV=production - REDIS_HOST=redis - MONGODB_URI=mongodb://mongodb:27017/marketing_agent - JWT_SECRET=your-secret-key-change-in-production - ORCHESTRATOR_URL=http://orchestrator:3001 - CLAUDE_AGENT_URL=http://claude-agent:3002 - GRAMJS_ADAPTER_URL=http://gramjs-adapter:3003 - SAFETY_GUARD_URL=http://safety-guard:3004 - ANALYTICS_URL=http://analytics:3005 - COMPLIANCE_GUARD_URL=http://compliance-guard:3006 - AB_TESTING_URL=http://ab-testing:3007 - TELEGRAM_SYSTEM_URL=http://host.docker.internal:8080 depends_on: - redis - orchestrator - claude-agent - gramjs-adapter - safety-guard - analytics - compliance-guard - ab-testing networks: - marketing_network restart: unless-stopped # Orchestrator Service orchestrator: build: ./services/orchestrator container_name: marketing_orchestrator environment: - NODE_ENV=production - MONGODB_URI=mongodb://mongodb:27017/marketing_agent - REDIS_HOST=redis - RABBITMQ_URL=amqp://admin:admin@rabbitmq:5672 - JWT_SECRET=your-secret-key-change-in-production depends_on: - mongodb - redis - rabbitmq networks: - marketing_network restart: unless-stopped # Claude Agent Service claude-agent: build: ./services/claude-agent container_name: marketing_claude_agent environment: - NODE_ENV=production - MONGODB_URI=mongodb://mongodb:27017/marketing_agent - REDIS_HOST=redis - RABBITMQ_URL=amqp://admin:admin@rabbitmq:5672 - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} depends_on: - mongodb - redis - rabbitmq networks: - marketing_network restart: unless-stopped # GramJS Adapter Service gramjs-adapter: build: ./services/gramjs-adapter container_name: marketing_gramjs_adapter environment: - NODE_ENV=production - MONGODB_URI=mongodb://mongodb:27017/marketing_agent - REDIS_HOST=redis - RABBITMQ_URL=amqp://admin:admin@rabbitmq:5672 - TELEGRAM_SYSTEM_API_URL=http://host.docker.internal:8080 volumes: - gramjs_sessions:/app/sessions depends_on: - mongodb - redis - rabbitmq networks: - marketing_network restart: unless-stopped # Safety Guard Service safety-guard: build: ./services/safety-guard container_name: marketing_safety_guard environment: - NODE_ENV=production - MONGODB_URI=mongodb://mongodb:27017/marketing_agent - REDIS_HOST=redis - RABBITMQ_URL=amqp://admin:admin@rabbitmq:5672 - OPENAI_API_KEY=${OPENAI_API_KEY} - GOOGLE_CLOUD_PROJECT=${GOOGLE_CLOUD_PROJECT} depends_on: - mongodb - redis - rabbitmq networks: - marketing_network restart: unless-stopped # Analytics Service analytics: build: ./services/analytics container_name: marketing_analytics environment: - NODE_ENV=production - MONGODB_URI=mongodb://mongodb:27017/marketing_agent - REDIS_HOST=redis - CLICKHOUSE_HOST=clickhouse - ELASTICSEARCH_HOST=elasticsearch:9200 - RABBITMQ_URL=amqp://admin:admin@rabbitmq:5672 depends_on: - mongodb - redis - elasticsearch - rabbitmq networks: - marketing_network restart: unless-stopped # Compliance Guard Service compliance-guard: build: ./services/compliance-guard container_name: marketing_compliance_guard environment: - NODE_ENV=production - MONGODB_URI=mongodb://mongodb:27017/marketing_agent - REDIS_HOST=redis - RABBITMQ_URL=amqp://admin:admin@rabbitmq:5672 - JWT_SECRET=your-secret-key-change-in-production depends_on: - mongodb - redis - rabbitmq networks: - marketing_network restart: unless-stopped # A/B Testing Service ab-testing: build: ./services/ab-testing container_name: marketing_ab_testing environment: - NODE_ENV=production - MONGODB_URI=mongodb://mongodb:27017/marketing_agent - REDIS_HOST=redis - RABBITMQ_URL=amqp://admin:admin@rabbitmq:5672 depends_on: - mongodb - redis - rabbitmq networks: - marketing_network restart: unless-stopped # Frontend Service frontend: build: ./frontend container_name: marketing_frontend ports: - "3008:80" environment: - NODE_ENV=production depends_on: - api-gateway networks: - marketing_network restart: unless-stopped # Nginx API Gateway nginx: image: nginx:alpine container_name: marketing_nginx ports: - "8000:80" volumes: - ./infrastructure/nginx/nginx.conf:/etc/nginx/nginx.conf - ./infrastructure/nginx/conf.d:/etc/nginx/conf.d depends_on: - api-gateway networks: - marketing_network volumes: postgres_data: mongodb_data: redis_data: rabbitmq_data: elasticsearch_data: prometheus_data: grafana_data: gramjs_sessions: networks: marketing_network: driver: bridge