services: # ===================================== # Core Infrastructure Services # ===================================== postgres: image: pgvector/pgvector:pg15 container_name: pipeline_postgres environment: POSTGRES_USER: pipeline_admin POSTGRES_PASSWORD: secure_pipeline_2024 POSTGRES_DB: dev_pipeline volumes: - postgres_data:/var/lib/postgresql/data - ./databases/scripts/init.sql:/docker-entrypoint-initdb.d/init.sql ports: - "5432:5432" networks: - pipeline_network healthcheck: test: ["CMD-SHELL", "pg_isready -U pipeline_admin -d dev_pipeline"] interval: 30s timeout: 10s retries: 5 start_period: 60s redis: image: redis:7-alpine container_name: pipeline_redis command: redis-server --appendonly yes --requirepass redis_secure_2024 volumes: - redis_data:/data ports: - "6380:6379" networks: - pipeline_network healthcheck: test: ["CMD", "redis-cli", "--raw", "incr", "ping"] interval: 30s timeout: 10s retries: 5 start_period: 30s mongodb: image: mongo:7 container_name: pipeline_mongodb environment: MONGO_INITDB_ROOT_USERNAME: pipeline_admin MONGO_INITDB_ROOT_PASSWORD: mongo_secure_2024 volumes: - mongodb_data:/data/db ports: - "27017:27017" networks: - pipeline_network rabbitmq: build: context: ./infrastructure/rabbitmq dockerfile: Dockerfile image: automated-dev-pipeline-rabbitmq container_name: pipeline_rabbitmq environment: RABBITMQ_DEFAULT_USER: pipeline_admin RABBITMQ_DEFAULT_PASS: rabbit_secure_2024 volumes: - rabbitmq_data:/var/lib/rabbitmq - rabbitmq_logs:/var/log/rabbitmq ports: - "5673:5672" - "15672:15672" - "15692:15692" networks: - pipeline_network healthcheck: test: ["CMD", "rabbitmq-diagnostics", "ping"] interval: 30s timeout: 10s retries: 5 start_period: 60s # ===================================== # One-shot migrations runner (init job) # ===================================== migrations: image: node:18 container_name: pipeline_migrations working_dir: /app volumes: - ./:/app - migration_state:/tmp # Persistent volume for migration state environment: - POSTGRES_HOST=postgres - POSTGRES_PORT=5432 - POSTGRES_DB=dev_pipeline - POSTGRES_USER=pipeline_admin - POSTGRES_PASSWORD=secure_pipeline_2024 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis_secure_2024 - NODE_ENV=development - DATABASE_URL=postgresql://pipeline_admin:secure_pipeline_2024@postgres:5432/dev_pipeline - ALLOW_DESTRUCTIVE_MIGRATIONS=false # Safety flag for destructive operations entrypoint: ["/bin/sh", "-c", "chmod +x ./scripts/migrate-all.sh && ./scripts/migrate-all.sh"] depends_on: postgres: condition: service_healthy redis: condition: service_healthy networks: - pipeline_network restart: "no" # ===================================== # Enhanced Infrastructure for Code Generation # ===================================== neo4j: image: neo4j:5.15 container_name: pipeline_neo4j environment: - NEO4J_AUTH=neo4j/password - NEO4J_PLUGINS=["graph-data-science"] - NEO4J_dbms_security_procedures_unrestricted=gds.*,apoc.* ports: - "7474:7474" # Neo4j Browser - "7687:7687" # Bolt protocol volumes: - neo4j_data:/data - neo4j_logs:/logs networks: - pipeline_network healthcheck: test: ["CMD", "cypher-shell", "--username", "neo4j", "--password", "password", "MATCH () RETURN count(*) as count"] interval: 30s timeout: 10s retries: 5 start_period: 60s # chromadb: # image: chromadb/chroma:latest # container_name: pipeline_chromadb # ports: # - "8010:8000" # environment: # - CHROMA_SERVER_HOST=0.0.0.0 # - CHROMA_SERVER_HTTP_PORT=8000 # volumes: # - chromadb_data:/chroma/chroma # networks: # - pipeline_network # healthcheck: # test: ["CMD-SHELL", "curl -f http://localhost:8000/ || exit 1"] # interval: 30s # timeout: 10s # retries: 5 # start_period: 60s # chromadb: # image: chromadb/chroma:latest # container_name: pipeline_chromadb # ports: # - "8010:8000" # Changed port to avoid conflict with API Gateway # environment: # - CHROMA_SERVER_HOST=0.0.0.0 # - CHROMA_SERVER_HTTP_PORT=8000 # volumes: # - chromadb_data:/chroma/chroma # networks: # - pipeline_network # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost:8000/api/v2/heartbeat"] # interval: 30s # timeout: 10s # retries: 5 # chromadb: # image: chromadb/chroma:latest # container_name: pipeline_chromadb # ports: # - "8010:8000" # environment: # - CHROMA_SERVER_HOST=0.0.0.0 # - CHROMA_SERVER_HTTP_PORT=8000 # - IS_PERSISTENT=TRUE # - PERSIST_DIRECTORY=/chroma/chroma # - ANONYMIZED_TELEMETRY=TRUE # volumes: # - chromadb_data:/chroma/chroma # networks: # - pipeline_network # healthcheck: # test: ["CMD", "curl", "-f", "http://localhost:8000/api/v2/heartbeat"] # interval: 30s # timeout: 10s # retries: 5 # start_period: 60s chromadb: image: chromadb/chroma:latest container_name: pipeline_chromadb ports: - "8010:8000" environment: - CHROMA_SERVER_HOST=0.0.0.0 - CHROMA_SERVER_HTTP_PORT=8000 - IS_PERSISTENT=TRUE - PERSIST_DIRECTORY=/chroma/chroma - ANONYMIZED_TELEMETRY=TRUE volumes: - chromadb_data:/chroma/chroma networks: - pipeline_network healthcheck: test: ["CMD-SHELL", "timeout 5 bash -c ' process.exit(res.statusCode === 200 ? 0 : 1)).on('error', () => process.exit(1))"] interval: 30s timeout: 10s retries: 3 start_period: 40s restart: unless-stopped self-improving-generator: build: ./self-improving-generator container_name: pipeline_self_improving_generator ports: - "8007:8007" environment: - PORT=8007 - HOST=0.0.0.0 - DATABASE_URL=postgresql://pipeline_admin:secure_pipeline_2024@postgres:5432/dev_pipeline - CLAUDE_API_KEY=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 - REDIS_URL=redis://:redis_secure_2024@pipeline_redis:6379 - SERVICE_PORT=8007 - LOG_LEVEL=INFO - DEFAULT_TARGET_QUALITY=0.85 - MAX_ITERATIONS=5 - ENABLE_LEARNING_SYSTEM=true - ENABLE_BACKGROUND_PROCESSING=true networks: - pipeline_network depends_on: postgres: condition: service_healthy redis: condition: service_healthy migrations: condition: service_completed_successfully volumes: - ./self-improving-generator:/app - /tmp/generated-projects:/tmp/generated-projects restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8007/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # ===================================== # AI Analysis Service # ===================================== ai-analysis-service: build: ./services/ai-analysis-service container_name: pipeline_ai_analysis_service ports: - "8022:8022" environment: - PORT=8022 - HOST=0.0.0.0 - ANTHROPIC_API_KEY=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 - POSTGRES_HOST=postgres - POSTGRES_PORT=5432 - POSTGRES_DB=dev_pipeline - POSTGRES_USER=pipeline_admin - POSTGRES_PASSWORD=secure_pipeline_2024 - REDIS_HOST=redis - REDIS_PORT=6379 - REDIS_PASSWORD=redis_secure_2024 - MONGODB_URL=mongodb://pipeline_admin:mongo_secure_2024@mongodb:27017/ - MONGODB_DB=repo_analyzer - GIT_INTEGRATION_SERVICE_URL=http://git-integration:8012 - CLAUDE_REQUESTS_PER_MINUTE=90 - MAX_FILES_DEFAULT=100 - CACHE_TTL_SECONDS=86400 - CONTENT_MAX_TOKENS=8000 - ENHANCED_PROCESSING_ENABLED=true - ENHANCED_BATCH_PROCESSING=true - ENHANCED_SMART_CHUNKING=true - ENHANCED_RATE_LIMIT=120 - ENHANCED_BATCH_DELAY=0.05 - ENHANCED_SMALL_FILE_DELAY=0.02 - ENHANCED_MEDIUM_FILE_DELAY=0.05 - ENHANCED_LARGE_FILE_DELAY=0.1 volumes: - ai_analysis_logs:/app/logs - ./ai-analysis-reports:/app/reports - ai_analysis_temp:/app/temp networks: - pipeline_network depends_on: - postgres - redis - mongodb - git-integration healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8022/health"] interval: 30s timeout: 10s retries: 3 start_period: 60s restart: unless-stopped # ===================================== # Workflow Orchestration # ===================================== dashboard: build: ./dashboard-service container_name: pipeline_dashboard ports: - "8008:8008" environment: - NODE_ENV=production - PORT=8008 - DATABASE_URL=postgresql://pipeline_admin:secure_pipeline_2024@postgres:5432/dev_pipeline - REDIS_URL=redis://:redis_secure_2024@pipeline_redis:6379 - API_GATEWAY_URL=http://pipeline_api_gateway:8000 - CODE_GENERATOR_URL=http://pipeline_code_generator:8004 - SELF_IMPROVING_URL=http://pipeline_self_improving_generator:8007 - REQUIREMENT_PROCESSOR_URL=http://pipeline_requirement_processor:8001 - TECH_STACK_SELECTOR_URL=http://pipeline_tech_stack_selector:8002 - ARCHITECTURE_DESIGNER_URL=http://pipeline_architecture_designer:8003 - TEST_GENERATOR_URL=http://pipeline_test_generator:8005 - DEPLOYMENT_MANAGER_URL=http://pipeline_deployment_manager:8006 networks: - pipeline_network depends_on: postgres: condition: service_healthy redis: condition: service_healthy code-generator: condition: service_healthy self-improving-generator: condition: service_healthy migrations: condition: service_completed_successfully volumes: - /tmp/generated-projects:/tmp/generated-projects:ro - ./dashboard-exports:/tmp/dashboard-exports restart: unless-stopped healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8008/api/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s n8n: image: n8nio/n8n:latest container_name: pipeline_n8n ports: - "5678:5678" environment: - N8N_BASIC_AUTH_ACTIVE=true - N8N_BASIC_AUTH_USER=admin - N8N_BASIC_AUTH_PASSWORD=admin_n8n_2024 - N8N_HOST=localhost - N8N_PORT=5678 - N8N_PROTOCOL=http - WEBHOOK_URL=http://localhost:5678 - GENERIC_TIMEZONE=UTC - DB_TYPE=postgresdb - DB_POSTGRESDB_HOST=postgres - DB_POSTGRESDB_PORT=5432 - DB_POSTGRESDB_DATABASE=dev_pipeline - DB_POSTGRESDB_USER=pipeline_admin - DB_POSTGRESDB_PASSWORD=secure_pipeline_2024 volumes: - n8n_data:/home/node/.n8n - ./orchestration/n8n/workflows:/home/node/.n8n/workflows networks: - pipeline_network depends_on: postgres: condition: service_healthy redis: condition: service_healthy rabbitmq: condition: service_healthy healthcheck: test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:5678/healthz"] interval: 30s timeout: 10s retries: 5 start_period: 60s # ===================================== # Volumes # ===================================== volumes: postgres_data: driver: local redis_data: driver: local mongodb_data: driver: local rabbitmq_data: driver: local rabbitmq_logs: driver: local git_repos_data: driver: local n8n_data: driver: local neo4j_data: driver: local neo4j_logs: driver: local chromadb_data: driver: local api_gateway_logs: driver: local migration_state: driver: local ai_analysis_logs: driver: local ai_analysis_reports: driver: local ai_analysis_temp: driver: local # ===================================== # Networks # ===================================== networks: pipeline_network: driver: bridge