🐳 DOCKER: Containerizando tu Bot de Trading

De "funciona en mi máquina" a producción real en minutos

Semanas 11-12: Despliegue Profesional
Dockerfile docker-compose Variables de entorno VPS / Cloud deploy
🐳 Piénsalo así: Docker es como un contenedor de envío estandarizado. Antes, los barcos cargaban cajas de todos los tamaños ” era el caos. Con contenedores, todo tiene el mismo formato: se apilan igual en cualquier barco, puerto, o grúa. Tu bot funciona exactamente igual en tu laptop, en un servidor de AWS, en Google Cloud, o en un VPS de $5/mes. El Dockerfile es el molde, el docker-compose.yml orquesta múltiples servicios (bot + BD + monitor), y las variables de entorno mantienen tus API keys fuera del código.
📚 Referencias: Docker Documentation ” Best Practices for Dockerfile · Docker Compose CLI reference · 12-Factor App methodology (12factor.net)
Dockerfile Builder
docker-compose
Deploy Steps
Env Secrets

Generador de Dockerfile ” Configura tu bot

# Haz clic en "Generar Dockerfile" para ver el resultado aquí

Constructor de docker-compose.yml

Selecciona los servicios que necesita tu stack:
# Selecciona servicios arriba para generar el docker-compose.yml

Guía de Despliegue Paso a Paso

    Comandos de producción

    # En el VPS ” instalar Docker y docker-compose
    curl -fsSL https://get.docker.com | sh
    apt install docker-compose-plugin -y
    
    # Subir tu código
    git clone https://github.com/tuuser/trading-bot.git
    cd trading-bot
    
    # Crear archivo de entorno (NUNCA al repositorio)
    cp .env.example .env
    nano .env # Editar con tus API keys
    
    # Construir y correr en background
    docker compose up --build -d
    
    # Ver logs en tiempo real
    docker compose logs -f bot
    
    # Reiniciar solo el bot (hot-reload)
    docker compose restart bot
    
    # Actualizar a nueva versión
    git pull && docker compose up --build -d

    Gestión Segura de Secretos

    # .env.example ” ESTE sí va al repo
    # .env ” NUNCA al repo (.gitignore)
    
    # Exchange API Keys
    EXCHANGE_API_KEY=your_key_here
    EXCHANGE_SECRET=your_secret_here
    EXCHANGE_SANDBOX=true # false en prod
    
    # Base de datos
    DB_HOST=postgres # nombre del servicio
    DB_PORT=5432
    DB_USER=botuser
    DB_PASS=CHANGE_ME_STRONG!
    DB_NAME=trading_bot
    
    # Telegram / Discord alertas
    TELEGRAM_TOKEN=bot_token_here
    TELEGRAM_CHAT_ID=-1001234567890
    DISCORD_WEBHOOK=https://discord.com/api/...
    
    # Configuración del bot
    TRADE_SYMBOL=BTC/USDT
    RISK_PER_TRADE=0.02 # 2% del capital
    DRY_RUN=true # Sin trades reales
    # Leer .env en Python
    from dotenv import load_dotenv
    import os
    
    load_dotenv() # Carga .env automáticamente
    
    API_KEY = os.getenv("EXCHANGE_API_KEY")
    SECRET = os.getenv("EXCHANGE_SECRET")
    if not API_KEY:
      raise ValueError("EXCHANGE_API_KEY no configurada")
    
    # Validación de entorno al arrancar
    REQUIRED_VARS = [
      "EXCHANGE_API_KEY", "EXCHANGE_SECRET",
      "DB_HOST", "DB_PASS", "TELEGRAM_TOKEN"
    ]
    missing = [v for v in REQUIRED_VARS if not os.getenv(v)]
    if missing:
      raise EnvironmentError(f"Falta: {missing}")
    
    # .gitignore ” CRÍTICO
    # .env
    # *.key
    # secrets/
    # __pycache__/
     ï¸ NUNCA hagas: imprimir API keys en logs · hardcodear en el código · subirlas al repo · compartirlas por Telegram/Slack sin cifrar
    🐳 Explora cada pestaña ” genera tu Dockerfile, arma el docker-compose, y sigue los pasos de despliegue.