codenuk_backend_mine/docker-compose.yml
2025-09-04 12:15:44 +00:00

1117 lines
31 KiB
YAML

services:
# =====================================
# Core Infrastructure Services
# =====================================
postgres:
image: postgres:15
container_name: pipeline_postgres
environment:
POSTGRES_USER: pipeline_admin
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: dev_pipeline
volumes:
- postgres_data:/var/lib/postgresql/data
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_PASSWORD}
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_user
# MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD}
# 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: ${RABBITMQ_PASSWORD}
# volumes:
# - rabbitmq_data:/var/lib/rabbitmq
# - rabbitmq_logs:/var/log/rabbitmq
# ports:
# - "5672:5672"
# - "15672:15672"
# - "15692:15692"
# networks:
# - pipeline_network
# healthcheck:
# test: ["CMD", "rabbitmq-diagnostics", "ping"]
# interval: 30s
# timeout: 10s
# retries: 5
# start_period: 60s
# # =====================================
# # Application Services
# # =====================================
# api-gateway:
# build: ./services/api-gateway
# container_name: pipeline_api_gateway
# ports:
# - "8000:8000"
# environment:
# - NODE_ENV=development
# - PORT=8000
# - REDIS_HOST=redis
# - REDIS_PORT=6379
# - REDIS_PASSWORD=${REDIS_PASSWORD}
# - POSTGRES_HOST=postgres
# - POSTGRES_PORT=5432
# - POSTGRES_DB=dev_pipeline
# - POSTGRES_USER=pipeline_admin
# - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
# - RABBITMQ_HOST=rabbitmq
# - RABBITMQ_PORT=5672
# - RABBITMQ_USER=pipeline_admin
# - RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD}
# networks:
# - pipeline_network
# depends_on:
# postgres:
# condition: service_healthy
# redis:
# condition: service_healthy
# rabbitmq:
# condition: service_healthy
# 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=${POSTGRES_PASSWORD}
# - REDIS_HOST=redis
# - REDIS_PORT=6379
# - REDIS_PASSWORD=${REDIS_PASSWORD}
# - MONGODB_HOST=mongodb
# - MONGODB_PORT=27017
# networks:
# - pipeline_network
# depends_on:
# postgres:
# condition: service_healthy
# redis:
# condition: service_healthy
# mongodb:
# condition: service_started
# 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=${POSTGRES_PASSWORD}
# - REDIS_HOST=redis
# - REDIS_PORT=6379
# - REDIS_PASSWORD=${REDIS_PASSWORD}
# networks:
# - pipeline_network
# depends_on:
# postgres:
# condition: service_healthy
# redis:
# condition: service_healthy
# architecture-designer:
# build: ./services/architecture-designer
# container_name: pipeline_architecture_designer
# ports:
# - "8003:8003"
# environment:
# - POSTGRES_HOST=postgres
# - HOST=0.0.0.0
# - CLAUDE_API_KEY=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
# - POSTGRES_PORT=5432
# - POSTGRES_DB=dev_pipeline
# - POSTGRES_USER=pipeline_admin
# - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
# - MONGODB_HOST=mongodb
# - MONGODB_PORT=27017
# networks:
# - pipeline_network
# depends_on:
# postgres:
# condition: service_healthy
# mongodb:
# condition: service_started
# 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:
# - POSTGRES_HOST=postgres
# - POSTGRES_PORT=5432
# - POSTGRES_DB=dev_pipeline
# - POSTGRES_USER=pipeline_admin
# - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
# - MONGODB_HOST=mongodb
# - MONGODB_PORT=27017
# - REDIS_HOST=redis
# - REDIS_PORT=6379
# - REDIS_PASSWORD=${REDIS_PASSWORD}
# - CLAUDE_API_KEY=${CLAUDE_API_KEY}
# - OPENAI_API_KEY=${OPENAI_API_KEY}
# - NEO4J_URI=bolt://neo4j:7687
# - NEO4J_USER=neo4j
# - NEO4J_PASSWORD=password
# - CHROMA_HOST=chromadb
# - CHROMA_PORT=8000
# networks:
# - pipeline_network
# depends_on:
# postgres:
# condition: service_healthy
# redis:
# condition: service_healthy
# mongodb:
# condition: service_started
# neo4j:
# chromadb:
# 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=${POSTGRES_PASSWORD}
# - REDIS_HOST=redis
# - REDIS_PORT=6379
# - REDIS_PASSWORD=${REDIS_PASSWORD}
# networks:
# - pipeline_network
# depends_on:
# postgres:
# condition: service_healthy
# redis:
# condition: service_healthy
# 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=${POSTGRES_PASSWORD}
# - MONGODB_HOST=mongodb
# - MONGODB_PORT=27017
# - RABBITMQ_HOST=rabbitmq
# - RABBITMQ_PORT=5672
# - RABBITMQ_USER=pipeline_admin
# - RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD}
# networks:
# - pipeline_network
# depends_on:
# postgres:
# condition: service_healthy
# rabbitmq:
# condition: service_healthy
# mongodb:
# condition: service_started
# # =====================================
# # =====================================
# # Workflow Orchestration
# # =====================================
# n8n:
# image: n8nio/n8n:latest
# container_name: pipeline_n8n
# ports:
# - "5678:5678"
# environment:
# - N8N_BASIC_AUTH_ACTIVE=true
# - N8N_BASIC_AUTH_USER=pipeline_admin
# - N8N_BASIC_AUTH_PASSWORD=pipeline_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=n8n
# - DB_POSTGRESDB_USER=pipeline_admin
# - DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
# 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
# n8n_data:
# driver: local
# neo4j_data:
# driver: local
# chromadb_data:
# driver: local
# # =====================================
# # Networks
# # =====================================
# networks:
# pipeline_network:
# driver: bridge
# neo4j:
# image: neo4j:5.15
# environment:
# - NEO4J_AUTH=neo4j/password
# ports:
# - "7474:7474"
# - "7687:7687"
# volumes:
# - neo4j_data:/data
# networks:
# - pipeline_network
# chromadb:
# image: chromadb/chroma:latest
# ports:
# - "8000:8000"
# volumes:
# - chromadb_data:/chroma/chroma
# networks:
# - pipeline_network
# redis:
# image: redis:7-alpine
# container_name: pipeline_redis
# environment:
# REDIS_PASSWORD: redis123
# REDIS_USER: redisuser
# ports:
# - "6380:6379"
# volumes:
# - redis_data:/data
# command: redis-server --requirepass redis123
# healthcheck:
# test: ["CMD", "redis-cli", "--raw", "incr", "ping"]
# interval: 30s
# timeout: 10s
# retries: 3
# start_period: 40s
mongodb:
image: mongo:7
container_name: pipeline_mongodb
environment:
MONGO_INITDB_ROOT_USERNAME: pipeline_user
MONGO_INITDB_ROOT_PASSWORD: ${MONGODB_PASSWORD}
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: ${RABBITMQ_PASSWORD}
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
# environment:
# - POSTGRES_HOST=postgres
# - POSTGRES_PORT=5432
# - POSTGRES_DB=dev_pipeline
# - POSTGRES_USER=pipeline_admin
# - POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
# - REDIS_HOST=redis
# - REDIS_PORT=6379
# - REDIS_PASSWORD=${REDIS_PASSWORD}
# - NODE_ENV=development
# 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 '</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
- FRONTEND_URL=http://localhost:3000
# Database connections
- POSTGRES_HOST=postgres
- POSTGRES_PORT=5432
- POSTGRES_DB=dev_pipeline
- POSTGRES_USER=pipeline_admin
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
# Cache and message queue
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
- RABBITMQ_HOST=rabbitmq
- RABBITMQ_PORT=5672
- RABBITMQ_USER=pipeline_admin
- RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD}
# JWT configuration
- JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-${POSTGRES_PASSWORD}
- JWT_REFRESH_SECRET=refresh-secret-key-2024-tech4biz-${POSTGRES_PASSWORD}
# Service URLs
- USER_AUTH_URL=http://user-auth:8011
- TEMPLATE_MANAGER_URL=http://template-manager:8009
- GIT_INTEGRATION_URL=http://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
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=${POSTGRES_PASSWORD}
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
- 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: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=${POSTGRES_PASSWORD}
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
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=${POSTGRES_PASSWORD}
- 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=${POSTGRES_PASSWORD}
- MONGODB_HOST=mongodb
- MONGODB_PORT=27017
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
- 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=${POSTGRES_PASSWORD}
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
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=${POSTGRES_PASSWORD}
- MONGODB_HOST=mongodb
- MONGODB_PORT=27017
- RABBITMQ_HOST=rabbitmq
- RABBITMQ_PORT=5672
- RABBITMQ_USER=pipeline_admin
- RABBITMQ_PASSWORD=${RABBITMQ_PASSWORD}
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:
- 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=${POSTGRES_PASSWORD}
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
- JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-${POSTGRES_PASSWORD}
- JWT_REFRESH_SECRET=refresh-secret-key-2024-tech4biz-${POSTGRES_PASSWORD}
- JWT_ACCESS_EXPIRY=15m
- JWT_REFRESH_EXPIRY=7d
- FRONTEND_URL=http://localhost:3000
# Email Configuration
- SMTP_HOST=${SMTP_HOST:-smtp.gmail.com}
- SMTP_PORT=${SMTP_PORT:-587}
- SMTP_SECURE=${SMTP_SECURE:-false}
- SMTP_USER=${SMTP_USER:-frontendtechbiz@gmail.com}
- SMTP_PASS=${SMTP_PASS:-oidhhjeasgzbqptq}
- SMTP_FROM=${SMTP_FROM:-frontendtechbiz@gmail.com}
- GMAIL_USER=${GMAIL_USER:-frontendtechbiz@gmail.com}
- GMAIL_APP_PASSWORD=${GMAIL_APP_PASSWORD:-oidhhjeasgzbqptq}
- AUTH_PUBLIC_URL=http://localhost:8011
- 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", "curl", "-f", "http://localhost: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=${POSTGRES_PASSWORD}
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
- NODE_ENV=development
- JWT_ACCESS_SECRET=access-secret-key-2024-tech4biz-secure_pipeline_2024
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
git-integration:
build: ./services/git-integration
container_name: pipeline_git_integration
ports:
- "8012:8012"
env_file:
- ./services/git-integration/.env
environment:
- PORT=8012
- HOST=0.0.0.0
- FRONTEND_URL=http://localhost:3000
- POSTGRES_HOST=postgres
- POSTGRES_PORT=5432
- POSTGRES_DB=dev_pipeline
- POSTGRES_USER=pipeline_admin
- POSTGRES_PASSWORD=${POSTGRES_PASSWORD}
- REDIS_HOST=redis
- REDIS_PORT=6379
- REDIS_PASSWORD=${REDIS_PASSWORD}
- NODE_ENV=development
- GITHUB_REDIRECT_URI=http://localhost:8012/api/github/auth/github/callback
- ATTACHED_REPOS_DIR=/tmp/attached-repos
- SESSION_SECRET=git-integration-secret-key-2024
volumes:
- git_repos_data:/tmp/attached-repos
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:${POSTGRES_PASSWORD}@postgres:5432/dev_pipeline
- CLAUDE_API_KEY=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
- REDIS_URL=redis://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
# =====================================
# Workflow Orchestration
# =====================================
dashboard:
build: ./dashboard-service
container_name: pipeline_dashboard
ports:
- "8008:8008"
environment:
- NODE_ENV=production
- PORT=8008
- DATABASE_URL=postgresql://pipeline_admin:${POSTGRES_PASSWORD}@postgres:5432/dev_pipeline
- REDIS_URL=redis://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=pipeline_admin
- N8N_BASIC_AUTH_PASSWORD=pipeline_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=n8n
- DB_POSTGRESDB_USER=pipeline_admin
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
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
# =====================================
# Networks
# =====================================
networks:
pipeline_network:
driver: bridge
# =====================================
# Self-Improving Code Generator
# =====================================
# =====================================
# Self-Improving Code Generator
# =====================================