- Update CLAUDE.md with project-level instructions - Update docker-compose.yml with correct service ports - Update PROJECT-PROFILE.yml with current module status - Update PROJECT-STATUS.md with Phase 2/4 progress - Update PROXIMA-ACCION.md with current priorities - Purge stale sprint reports from _archive - Add TASK-2026-01-27-MASTER-ANALYSIS-PLAN documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
320 lines
10 KiB
YAML
320 lines
10 KiB
YAML
version: '3.8'
|
|
|
|
# =============================================================================
|
|
# TRADING PLATFORM - Docker Compose Configuration
|
|
# =============================================================================
|
|
# Este archivo define los servicios de APLICACION del proyecto.
|
|
# PostgreSQL y Redis usan instancias NATIVAS compartidas del workspace.
|
|
# Ref: orchestration/inventarios/DEVENV-PORTS-INVENTORY.yml
|
|
# Fecha: 2026-01-07
|
|
# =============================================================================
|
|
#
|
|
# IMPORTANTE - Arquitectura de Instancia Unica Compartida:
|
|
# - PostgreSQL: Instancia nativa en puerto 5432 (NO Docker)
|
|
# - Redis: Instancia nativa en puerto 6379 (NO Docker)
|
|
# - Los proyectos se separan por DATABASE + USER, no por puerto
|
|
#
|
|
# =============================================================================
|
|
|
|
services:
|
|
# ===========================================================================
|
|
# NOTA: PostgreSQL y Redis son NATIVOS (no Docker)
|
|
# ===========================================================================
|
|
# PostgreSQL nativo: localhost:5432
|
|
# - Database: trading_platform
|
|
# - User: trading_user
|
|
# - Password: trading_dev_2026
|
|
#
|
|
# Redis nativo: localhost:6379
|
|
# - DB: 1 (asignado a trading-platform)
|
|
# ===========================================================================
|
|
|
|
# ===========================================================================
|
|
# BACKEND SERVICES
|
|
# ===========================================================================
|
|
|
|
backend:
|
|
build:
|
|
context: ./apps/backend
|
|
dockerfile: Dockerfile
|
|
container_name: trading-backend
|
|
restart: unless-stopped
|
|
environment:
|
|
NODE_ENV: ${NODE_ENV:-development}
|
|
PORT: ${BACKEND_API_PORT:-3081}
|
|
# PostgreSQL nativo (host.docker.internal para acceder desde Docker a host)
|
|
DB_HOST: host.docker.internal
|
|
DB_PORT: 5432
|
|
DB_NAME: trading_platform
|
|
DB_USER: trading_user
|
|
DB_PASSWORD: ${DB_PASSWORD:-trading_dev_2026}
|
|
# Redis nativo
|
|
REDIS_HOST: host.docker.internal
|
|
REDIS_PORT: 6379
|
|
REDIS_DB: 1
|
|
ML_ENGINE_URL: http://ml-engine:3083
|
|
FRONTEND_URL: http://localhost:${FRONTEND_WEB_PORT:-3080}
|
|
JWT_ACCESS_SECRET: ${JWT_ACCESS_SECRET}
|
|
JWT_REFRESH_SECRET: ${JWT_REFRESH_SECRET}
|
|
STRIPE_SECRET_KEY: ${STRIPE_SECRET_KEY}
|
|
ports:
|
|
- "${BACKEND_API_PORT:-3081}:3081"
|
|
- "${BACKEND_WS_PORT:-3082}:3082"
|
|
volumes:
|
|
- ./apps/backend/src:/app/src
|
|
- backend_node_modules:/app/node_modules
|
|
networks:
|
|
- trading-network
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
command: npm run dev
|
|
|
|
# ===========================================================================
|
|
# FRONTEND SERVICES
|
|
# ===========================================================================
|
|
|
|
frontend:
|
|
build:
|
|
context: ./apps/frontend
|
|
dockerfile: Dockerfile
|
|
container_name: trading-frontend
|
|
restart: unless-stopped
|
|
environment:
|
|
VITE_API_URL: http://localhost:${BACKEND_API_PORT:-3081}/api/v1
|
|
VITE_WS_URL: ws://localhost:${BACKEND_WS_PORT:-3082}
|
|
VITE_STRIPE_PUBLISHABLE_KEY: ${STRIPE_PUBLISHABLE_KEY}
|
|
ports:
|
|
- "${FRONTEND_WEB_PORT:-3080}:3080"
|
|
volumes:
|
|
- ./apps/frontend/src:/app/src
|
|
- ./apps/frontend/public:/app/public
|
|
- frontend_node_modules:/app/node_modules
|
|
networks:
|
|
- trading-network
|
|
depends_on:
|
|
- backend
|
|
command: npm run dev -- --host 0.0.0.0 --port 3080
|
|
|
|
# ===========================================================================
|
|
# PYTHON SERVICES
|
|
# ===========================================================================
|
|
|
|
ml-engine:
|
|
build:
|
|
context: ./apps/ml-engine
|
|
dockerfile: Dockerfile
|
|
container_name: trading-ml-engine
|
|
restart: unless-stopped
|
|
environment:
|
|
PYTHONUNBUFFERED: 1
|
|
# PostgreSQL nativo
|
|
DB_HOST: host.docker.internal
|
|
DB_PORT: 5432
|
|
DB_NAME: trading_platform
|
|
DB_USER: trading_user
|
|
DB_PASSWORD: ${DB_PASSWORD:-trading_dev_2026}
|
|
# Redis nativo
|
|
REDIS_HOST: host.docker.internal
|
|
REDIS_PORT: 6379
|
|
REDIS_DB: 1
|
|
PORT: ${ML_ENGINE_PORT:-3083}
|
|
LOG_LEVEL: INFO
|
|
ports:
|
|
- "${ML_ENGINE_PORT:-3083}:3083"
|
|
volumes:
|
|
- ./apps/ml-engine/src:/app/src
|
|
- ./apps/ml-engine/models:/app/models
|
|
- ml_models:/app/trained_models
|
|
networks:
|
|
- trading-network
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
command: uvicorn src.api.main:app --host 0.0.0.0 --port 3083 --reload
|
|
|
|
data-service:
|
|
build:
|
|
context: ./apps/data-service
|
|
dockerfile: Dockerfile
|
|
container_name: trading-data-service
|
|
restart: unless-stopped
|
|
environment:
|
|
PYTHONUNBUFFERED: 1
|
|
# PostgreSQL nativo
|
|
DB_HOST: host.docker.internal
|
|
DB_PORT: 5432
|
|
DB_NAME: trading_platform
|
|
DB_USER: trading_user
|
|
DB_PASSWORD: ${DB_PASSWORD:-trading_dev_2026}
|
|
POLYGON_API_KEY: ${POLYGON_API_KEY}
|
|
METAAPI_TOKEN: ${METAAPI_TOKEN}
|
|
METAAPI_ACCOUNT_ID: ${METAAPI_ACCOUNT_ID}
|
|
SYNC_INTERVAL_MINUTES: 5
|
|
LOG_LEVEL: INFO
|
|
PORT: ${DATA_SERVICE_PORT:-3084}
|
|
ports:
|
|
- "${DATA_SERVICE_PORT:-3084}:3084"
|
|
volumes:
|
|
- ./apps/data-service/src:/app/src
|
|
networks:
|
|
- trading-network
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
command: python -m src.main
|
|
|
|
llm-agent:
|
|
build:
|
|
context: ./apps/llm-agent
|
|
dockerfile: Dockerfile
|
|
container_name: trading-llm-agent
|
|
restart: unless-stopped
|
|
environment:
|
|
PYTHONUNBUFFERED: 1
|
|
PORT: ${LLM_AGENT_PORT:-3085}
|
|
ML_ENGINE_URL: http://ml-engine:3083
|
|
DATA_SERVICE_URL: http://data-service:3084
|
|
# PostgreSQL nativo
|
|
DB_HOST: host.docker.internal
|
|
DB_PORT: 5432
|
|
DB_NAME: trading_platform
|
|
DB_USER: trading_user
|
|
DB_PASSWORD: ${DB_PASSWORD:-trading_dev_2026}
|
|
# Redis nativo
|
|
REDIS_HOST: host.docker.internal
|
|
REDIS_PORT: 6379
|
|
REDIS_DB: 1
|
|
LLM_PROVIDER: ${LLM_PROVIDER:-ollama}
|
|
LLM_MODEL: ${LLM_MODEL:-llama3.2}
|
|
OLLAMA_URL: ${OLLAMA_URL:-http://host.docker.internal:11434}
|
|
LOG_LEVEL: INFO
|
|
ports:
|
|
- "${LLM_AGENT_PORT:-3085}:3085"
|
|
volumes:
|
|
- ./apps/llm-agent/src:/app/src
|
|
- ./apps/llm-agent/config:/app/config
|
|
networks:
|
|
- trading-network
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
depends_on:
|
|
- ml-engine
|
|
- data-service
|
|
command: uvicorn src.api.main:app --host 0.0.0.0 --port 3085 --reload
|
|
|
|
trading-agents:
|
|
build:
|
|
context: ./apps/trading-agents
|
|
dockerfile: Dockerfile
|
|
container_name: trading-trading-agents
|
|
restart: unless-stopped
|
|
environment:
|
|
PYTHONUNBUFFERED: 1
|
|
PORT: ${TRADING_AGENTS_PORT:-3086}
|
|
ML_ENGINE_URL: http://ml-engine:3083
|
|
LLM_AGENT_URL: http://llm-agent:3085
|
|
DATA_SERVICE_URL: http://data-service:3084
|
|
# PostgreSQL nativo
|
|
DB_HOST: host.docker.internal
|
|
DB_PORT: 5432
|
|
DB_NAME: trading_platform
|
|
DB_USER: trading_user
|
|
DB_PASSWORD: ${DB_PASSWORD:-trading_dev_2026}
|
|
# Redis nativo
|
|
REDIS_HOST: host.docker.internal
|
|
REDIS_PORT: 6379
|
|
REDIS_DB: 1
|
|
EXCHANGE_MODE: ${EXCHANGE_MODE:-paper}
|
|
INITIAL_BALANCE: ${INITIAL_BALANCE:-100000}
|
|
LOG_LEVEL: INFO
|
|
ports:
|
|
- "${TRADING_AGENTS_PORT:-3086}:3086"
|
|
volumes:
|
|
- ./apps/trading-agents/src:/app/src
|
|
- ./apps/trading-agents/config:/app/config
|
|
networks:
|
|
- trading-network
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
depends_on:
|
|
- ml-engine
|
|
- llm-agent
|
|
command: uvicorn src.api.main:app --host 0.0.0.0 --port 3086 --reload
|
|
|
|
# ===========================================================================
|
|
# DEVELOPMENT TOOLS (Optional)
|
|
# ===========================================================================
|
|
|
|
pgadmin:
|
|
image: dpage/pgadmin4:latest
|
|
container_name: trading-pgadmin
|
|
restart: unless-stopped
|
|
environment:
|
|
PGADMIN_DEFAULT_EMAIL: ${PGADMIN_EMAIL:-admin@trading-platform.local}
|
|
PGADMIN_DEFAULT_PASSWORD: ${PGADMIN_PASSWORD:-admin}
|
|
PGADMIN_CONFIG_SERVER_MODE: 'False'
|
|
ports:
|
|
- "${PGADMIN_PORT:-5050}:80"
|
|
volumes:
|
|
- pgadmin_data:/var/lib/pgadmin
|
|
networks:
|
|
- trading-network
|
|
extra_hosts:
|
|
- "host.docker.internal:host-gateway"
|
|
profiles:
|
|
- dev-tools
|
|
|
|
mailhog:
|
|
image: mailhog/mailhog:latest
|
|
container_name: trading-mailhog
|
|
restart: unless-stopped
|
|
ports:
|
|
- "${MAILHOG_SMTP_PORT:-1025}:1025" # SMTP
|
|
- "${MAILHOG_WEB_PORT:-8025}:8025" # Web UI
|
|
networks:
|
|
- trading-network
|
|
profiles:
|
|
- dev-tools
|
|
|
|
# =============================================================================
|
|
# VOLUMES
|
|
# =============================================================================
|
|
# NOTA: postgres_data y redis_data eliminados - se usan instancias nativas
|
|
volumes:
|
|
backend_node_modules:
|
|
driver: local
|
|
frontend_node_modules:
|
|
driver: local
|
|
ml_models:
|
|
driver: local
|
|
pgadmin_data:
|
|
driver: local
|
|
|
|
# =============================================================================
|
|
# NETWORKS
|
|
# =============================================================================
|
|
networks:
|
|
trading-network:
|
|
driver: bridge
|
|
name: trading-network
|
|
|
|
# =============================================================================
|
|
# USAGE INSTRUCTIONS
|
|
# =============================================================================
|
|
# Start all services:
|
|
# docker-compose up -d
|
|
#
|
|
# Start with development tools:
|
|
# docker-compose --profile dev-tools up -d
|
|
#
|
|
# View logs:
|
|
# docker-compose logs -f [service-name]
|
|
#
|
|
# Stop all services:
|
|
# docker-compose down
|
|
#
|
|
# Reset everything (including volumes):
|
|
# docker-compose down -v
|
|
#
|
|
# Rebuild a service:
|
|
# docker-compose up -d --build [service-name]
|
|
# =============================================================================
|