927 lines
29 KiB
YAML
927 lines
29 KiB
YAML
services:
|
|
# =====================================
|
|
# Core Infrastructure Services
|
|
# =====================================
|
|
|
|
postgres:
|
|
image: postgres:15
|
|
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:
|
|
- "6379: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-alpine
|
|
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", "apk add --no-cache postgresql-client python3 py3-pip && 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 '</dev/tcp/127.0.0.1/8000' || exit 1"]
|
|
interval: 15s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 30s
|
|
|
|
|
|
|
|
# =====================================
|
|
# Application Services
|
|
# =====================================
|
|
|
|
api-gateway:
|
|
build: ./services/api-gateway
|
|
container_name: pipeline_api_gateway
|
|
ports:
|
|
- "8000:8000"
|
|
environment:
|
|
- NODE_ENV=development
|
|
- PORT=8000
|
|
- HOST=0.0.0.0
|
|
- CORS_ORIGINS=https://dashboard.codenuk.com
|
|
- CORS_METHODS=GET,POST,PUT,DELETE,PATCH,OPTIONS # Add this line
|
|
- CORS_CREDENTIALS=true # Add this line
|
|
# Database connections
|
|
- POSTGRES_HOST=postgres
|
|
- POSTGRES_PORT=5432
|
|
- POSTGRES_DB=dev_pipeline
|
|
- POSTGRES_USER=pipeline_admin
|
|
- POSTGRES_PASSWORD=secure_pipeline_2024
|
|
# Cache and message queue
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_PASSWORD=redis_secure_2024
|
|
- RABBITMQ_HOST=rabbitmq
|
|
- RABBITMQ_PORT=5672
|
|
- RABBITMQ_USER=pipeline_admin
|
|
- RABBITMQ_PASSWORD=rabbit_secure_2024
|
|
# JWT configuration
|
|
- JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-secure_pipeline_2024
|
|
- JWT_SECRET=ultra_secure_jwt_secret_2024
|
|
# - JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-secure_pipeline_2024
|
|
# - JWT_REFRESH_SECRET=refresh-secret-key-2024-tech4biz-secure_pipeline_2024
|
|
# Service URLs
|
|
- USER_AUTH_URL=http://user-auth:8011
|
|
- TEMPLATE_MANAGER_URL=http://template-manager:8009
|
|
- GIT_INTEGRATION_URL=http://pipeline_git_integration:8012
|
|
- REQUIREMENT_PROCESSOR_URL=http://requirement-processor:8001
|
|
- TECH_STACK_SELECTOR_URL=http://tech-stack-selector:8002
|
|
- ARCHITECTURE_DESIGNER_URL=http://architecture-designer:8003
|
|
- CODE_GENERATOR_URL=http://code-generator:8004
|
|
- TEST_GENERATOR_URL=http://test-generator:8005
|
|
- DEPLOYMENT_MANAGER_URL=http://deployment-manager:8006
|
|
- DASHBOARD_URL=http://dashboard:8008
|
|
- SELF_IMPROVING_GENERATOR_URL=http://self-improving-generator:8007
|
|
- AI_MOCKUP_URL=http://ai-mockup-service:8021
|
|
- UNISON_URL=http://unison:8010
|
|
- TEMPLATE_MANAGER_AI_URL=http://template-manager:8013
|
|
volumes:
|
|
- api_gateway_logs:/app/logs # Add persistent volume for logs
|
|
user: "node" # Run as node user instead of root
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
rabbitmq:
|
|
condition: service_healthy
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
restart: unless-stopped
|
|
|
|
requirement-processor:
|
|
build: ./services/requirement-processor
|
|
container_name: pipeline_requirement_processor
|
|
ports:
|
|
- "8001:8001"
|
|
environment:
|
|
- POSTGRES_HOST=postgres
|
|
- POSTGRES_PORT=5432
|
|
- POSTGRES_DB=dev_pipeline
|
|
- POSTGRES_USER=pipeline_admin
|
|
- POSTGRES_PASSWORD=secure_pipeline_2024
|
|
- DATABASE_URL=postgresql://pipeline_admin:secure_pipeline_2024@postgres:5432/dev_pipeline
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_PASSWORD=redis_secure_2024
|
|
- MONGODB_HOST=mongodb
|
|
- MONGODB_PORT=27017
|
|
- NEO4J_URI=bolt://neo4j:7687
|
|
- NEO4J_USER=neo4j
|
|
- NEO4J_PASSWORD=password
|
|
- CHROMA_HOST=chromadb
|
|
- CHROMA_PORT=8000
|
|
- REDIS_URL=redis://:redis_secure_2024@redis:6379
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
mongodb:
|
|
condition: service_started
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
|
|
tech-stack-selector:
|
|
build: ./services/tech-stack-selector
|
|
container_name: pipeline_tech_stack_selector
|
|
ports:
|
|
- "8002:8002"
|
|
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
|
|
- CLAUDE_API_KEY=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
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
|
|
architecture-designer:
|
|
build: ./services/architecture-designer
|
|
container_name: pipeline_architecture_designer
|
|
ports:
|
|
- "8003:8003"
|
|
environment:
|
|
- PORT=8003
|
|
- HOST=0.0.0.0
|
|
- CLAUDE_API_KEY=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
|
|
- 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
|
|
- MONGODB_HOST=mongodb
|
|
- MONGODB_PORT=27017
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
mongodb:
|
|
condition: service_started
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8003/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
code-generator:
|
|
build: ./services/code-generator
|
|
container_name: pipeline_code_generator
|
|
ports:
|
|
- "8004:8004"
|
|
environment:
|
|
- PORT=8004
|
|
- HOST=0.0.0.0
|
|
- POSTGRES_HOST=postgres
|
|
- POSTGRES_PORT=5432
|
|
- POSTGRES_DB=dev_pipeline
|
|
- POSTGRES_USER=pipeline_admin
|
|
- POSTGRES_PASSWORD=secure_pipeline_2024
|
|
- MONGODB_HOST=mongodb
|
|
- MONGODB_PORT=27017
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_PASSWORD=redis_secure_2024
|
|
- CLAUDE_API_KEY=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
|
|
- OPENAI_API_KEY=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
|
|
# - NEO4J_URI=bolt://neo4j:7687
|
|
# - NEO4J_USER=neo4j
|
|
# - NEO4J_PASSWORD=password
|
|
# - CHROMA_HOST=chromadb
|
|
# - CHROMA_PORT=8000
|
|
volumes:
|
|
# NEW: Persistent volume for generated projects
|
|
- ./generated-projects:/tmp/generated-projects
|
|
# Optional: Also persist the generation logs/dashboards
|
|
- ./generation-logs:/tmp/generation-logs
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
mongodb:
|
|
condition: service_started
|
|
# neo4j:
|
|
# condition: service_healthy
|
|
chromadb:
|
|
condition: service_healthy
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8004/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
test-generator:
|
|
build: ./services/test-generator
|
|
container_name: pipeline_test_generator
|
|
ports:
|
|
- "8005:8005"
|
|
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
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
|
|
deployment-manager:
|
|
build: ./services/deployment-manager
|
|
container_name: pipeline_deployment_manager
|
|
ports:
|
|
- "8006:8006"
|
|
environment:
|
|
- POSTGRES_HOST=postgres
|
|
- POSTGRES_PORT=5432
|
|
- POSTGRES_DB=dev_pipeline
|
|
- POSTGRES_USER=pipeline_admin
|
|
- POSTGRES_PASSWORD=secure_pipeline_2024
|
|
- MONGODB_HOST=mongodb
|
|
- MONGODB_PORT=27017
|
|
- RABBITMQ_HOST=rabbitmq
|
|
- RABBITMQ_PORT=5672
|
|
- RABBITMQ_USER=pipeline_admin
|
|
- RABBITMQ_PASSWORD=rabbit_secure_2024
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
rabbitmq:
|
|
condition: service_healthy
|
|
mongodb:
|
|
condition: service_started
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
|
|
user-auth:
|
|
build: ./services/user-auth
|
|
container_name: pipeline_user_auth
|
|
ports:
|
|
- "8011:8011"
|
|
environment:
|
|
- FRONTEND_URL=https://dashboard.codenuk.com
|
|
- PORT=8011
|
|
- HOST=0.0.0.0
|
|
- NODE_ENV=development
|
|
- 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
|
|
- JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-secure_pipeline_2024
|
|
- JWT_REFRESH_SECRET=refresh-secret-key-2024-tech4biz-secure_pipeline_2024
|
|
- JWT_ACCESS_EXPIRY=24h
|
|
- JWT_ADMIN_ACCESS_EXPIRY=7d
|
|
- JWT_REFRESH_EXPIRY=7d
|
|
# Email Configuration
|
|
- SMTP_HOST=smtp.gmail.com
|
|
- SMTP_PORT=587
|
|
- SMTP_SECURE=false
|
|
- SMTP_USER=frontendtechbiz@gmail.com
|
|
- SMTP_PASS=oidhhjeasgzbqptq
|
|
- SMTP_FROM=frontendtechbiz@gmail.com
|
|
- GMAIL_USER=frontendtechbiz@gmail.com
|
|
- GMAIL_APP_PASSWORD=oidhhjeasgzbqptq
|
|
- AUTH_PUBLIC_URL=*
|
|
- TEMPLATE_MANAGER_URL=http://template-manager:8009
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--no-verbose", "--tries=1", "--spider", "http://127.0.0.1:8011/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
restart: unless-stopped
|
|
|
|
template-manager:
|
|
build: ./services/template-manager
|
|
container_name: pipeline_template_manager
|
|
ports:
|
|
- "8009:8009"
|
|
environment:
|
|
- PORT=8009
|
|
- HOST=0.0.0.0
|
|
- 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
|
|
- JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-secure_pipeline_2024
|
|
- CLAUDE_API_KEY=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
|
|
- TEMPLATE_MANAGER_AI_URL=http://127.0.0.1:8013
|
|
- NEO4J_URI=bolt://neo4j:7687
|
|
- NEO4J_USERNAME=neo4j
|
|
- NEO4J_PASSWORD=password
|
|
- PYTHONUNBUFFERED=1
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8009/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
restart: unless-stopped
|
|
|
|
# unison:
|
|
# build: ./services/unison
|
|
# container_name: pipeline_unison
|
|
# environment:
|
|
# - PORT=8010
|
|
# - HOST=0.0.0.0
|
|
# - TECH_STACK_SELECTOR_URL=http://tech-stack-selector:8002
|
|
# - TEMPLATE_MANAGER_URL=http://template-manager:8009
|
|
# - TEMPLATE_MANAGER_AI_URL=http://template-manager:8013
|
|
# - CLAUDE_API_KEY=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
|
|
# - LOG_LEVEL=info
|
|
# networks:
|
|
# - pipeline_network
|
|
# depends_on:
|
|
# tech-stack-selector:
|
|
# condition: service_started
|
|
# template-manager:
|
|
# condition: service_started
|
|
|
|
unified-tech-stack-service:
|
|
build: ./services/unified-tech-stack-service
|
|
container_name: pipeline_unified_tech_stack
|
|
ports:
|
|
- "8013:8013"
|
|
environment:
|
|
- PORT=8013
|
|
- NODE_ENV=development
|
|
- POSTGRES_HOST=postgres
|
|
- POSTGRES_PORT=5432
|
|
- POSTGRES_DB=dev_pipeline
|
|
- POSTGRES_USER=pipeline_admin
|
|
- POSTGRES_PASSWORD=secure_pipeline_2024
|
|
- DATABASE_URL=postgresql://pipeline_admin:secure_pipeline_2024@postgres:5432/dev_pipeline
|
|
- REDIS_HOST=redis
|
|
- REDIS_PORT=6379
|
|
- REDIS_PASSWORD=redis_secure_2024
|
|
- TEMPLATE_MANAGER_URL=http://template-manager:8009
|
|
- TECH_STACK_SELECTOR_URL=http://tech-stack-selector:8002
|
|
- CLAUDE_API_KEY=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
|
|
- ANTHROPIC_API_KEY=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
|
|
- REQUEST_TIMEOUT=30000
|
|
- HEALTH_CHECK_TIMEOUT=5000
|
|
- LOG_LEVEL=info
|
|
- CORS_ORIGIN=*
|
|
- CORS_CREDENTIALS=true
|
|
- ENABLE_TEMPLATE_RECOMMENDATIONS=true
|
|
- ENABLE_DOMAIN_RECOMMENDATIONS=true
|
|
- ENABLE_CLAUDE_RECOMMENDATIONS=true
|
|
- ENABLE_ANALYSIS=true
|
|
- ENABLE_CACHING=true
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
template-manager:
|
|
condition: service_started
|
|
tech-stack-selector:
|
|
condition: service_started
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8013/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
start_period: 40s
|
|
restart: unless-stopped
|
|
|
|
# AI Mockup / Wireframe Generation Service
|
|
ai-mockup-service:
|
|
build: ./services/ai-mockup-service
|
|
container_name: pipeline_ai_mockup_service
|
|
ports:
|
|
- "8021:8021"
|
|
environment:
|
|
- PORT=8021
|
|
- HOST=0.0.0.0
|
|
- CLAUDE_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
|
|
- JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-secure_pipeline_2024
|
|
- USER_AUTH_SERVICE_URL=http://user-auth:8011
|
|
- FLASK_ENV=development
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
user-auth:
|
|
condition: service_healthy
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8021/health"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 3
|
|
|
|
git-integration:
|
|
build: ./services/git-integration
|
|
container_name: pipeline_git_integration
|
|
ports:
|
|
- "8012:8012"
|
|
environment:
|
|
- PORT=8012
|
|
- HOST=0.0.0.0
|
|
- FRONTEND_URL=https://dashboard.codenuk.com
|
|
- 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
|
|
- GITHUB_CLIENT_ID=Ov23liQgF14aogXVZNCR
|
|
- GITHUB_CLIENT_SECRET=8bf82a29154fdccb837bc150539a2226d00b5da5
|
|
- GITHUB_REDIRECT_URI=https://backend.codenuk.com/api/github/auth/github/callback
|
|
- ATTACHED_REPOS_DIR=/tmp/git-repos
|
|
- GIT_REPOS_BASE_DIR=/tmp/git-repos
|
|
- GIT_DIFF_DIR=/tmp/git-repos/diffs
|
|
- SESSION_SECRET=git-integration-secret-key-2024
|
|
- JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-secure_pipeline_2024
|
|
- API_GATEWAY_PUBLIC_URL=https://backend.codenuk.com
|
|
# Additional VCS OAuth URLs for gateway
|
|
- BITBUCKET_CLIENT_ID=ZhdD8bbfugEUS4aL7v
|
|
- BITBUCKET_CLIENT_SECRET=K3dY3PFQRJUGYwBtERpHMswrRHbmK8qw
|
|
- BITBUCKET_REDIRECT_URI=https://backend.codenuk.com/api/vcs/bitbucket/auth/callback
|
|
- GITLAB_BASE_URL=https://gitlab.com
|
|
- GITLAB_CLIENT_ID=f05b0ab3ff6d5d26e1350ccf42d6394e085e343251faa07176991355112d4348
|
|
- GITLAB_CLIENT_SECRET=gloas-a2c11ed9bd84201d7773f264cad6e86a116355d80c24a68000cebfc92ebe2411
|
|
- GITLAB_REDIRECT_URI=https://backend.codenuk.com/api/vcs/gitlab/auth/callback
|
|
- GITLAB_WEBHOOK_SECRET=mywebhooksecret2025
|
|
- GITEA_BASE_URL=https://gitea.com
|
|
- GITEA_CLIENT_ID=d96d7ff6-8f56-4e58-9dbb-6d692de6504c
|
|
- GITEA_CLIENT_SECRET=gto_m7bn22idy35f4n4fxv7bwi7ky7w4q4mpgmwbtzhl4cinc4dpgmia
|
|
- GITEA_REDIRECT_URI=https://backend.codenuk.com/api/vcs/gitea/auth/callback
|
|
- GITEA_WEBHOOK_SECRET=mywebhooksecret2025
|
|
- PUBLIC_BASE_URL=https://a1247f5c9f93.ngrok-free.app
|
|
- GITHUB_WEBHOOK_SECRET=mywebhooksecret2025
|
|
# Additional environment variables for git-integration service
|
|
- ENABLE_BACKGROUND_DIFF_PROCESSING=true
|
|
- DIFF_PROCESSING_INTERVAL_MS=30000
|
|
- DIFF_STORAGE_PATH=/tmp/git-repos/diffs
|
|
- DIFF_STORAGE_DIR=/tmp/git-repos/diffs
|
|
- MAX_DIFF_SIZE_BYTES=10485760
|
|
volumes:
|
|
- git_repos_container_storage:/tmp/git-repos # Container-only storage using Docker volume
|
|
networks:
|
|
- pipeline_network
|
|
depends_on:
|
|
postgres:
|
|
condition: service_healthy
|
|
redis:
|
|
condition: service_healthy
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
healthcheck:
|
|
test: ["CMD", "curl", "-f", "http://localhost:8012/health"]
|
|
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@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: 15s
|
|
retries: 5
|
|
start_period: 120s
|
|
# =====================================
|
|
# 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
|
|
- DB_POSTGRESDB_SCHEMA=n8n
|
|
- N8N_LOG_LEVEL=info
|
|
- N8N_METRICS=true
|
|
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
|
|
migrations:
|
|
condition: service_completed_successfully
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost:5678/healthz"]
|
|
interval: 30s
|
|
timeout: 10s
|
|
retries: 5
|
|
start_period: 60s
|
|
restart: unless-stopped
|
|
|
|
# =====================================
|
|
# 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
|
|
|
|
# =====================================
|
|
# Networks
|
|
# =====================================
|
|
networks:
|
|
pipeline_network:
|
|
driver: bridge
|
|
# =====================================
|
|
# Self-Improving Code Generator
|
|
# =====================================
|
|
|
|
|
|
# =====================================
|
|
# Self-Improving Code Generator
|
|
# =====================================
|
|
|