Ctrl K
ComunidadGuías…

docker-compose.example.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
services:
  ib-gateway:
    image: ghcr.io/gnzsnz/ib-gateway:stable
    container_name: ib-gateway
    restart: unless-stopped
    environment:
      TWS_USERID: ${IBKR_USER_1}
      TWS_PASSWORD: ${IBKR_PASS_1}
      TRADING_MODE: ${IBKR_MODE_1:-paper}
      TWOFA_TIMEOUT_ACTION: restart
      RELOGIN_AFTER_TWOFA_TIMEOUT: "yes"
      EXISTING_SESSION_DETECTED_ACTION: primaryoverride
      TWS_SETTINGS_PATH: /home/ibgateway/tws_settings
      SAVE_TWS_SETTINGS: "yes"
      READ_ONLY_API: "no"
    volumes:
      - ./tws_settings:/home/ibgateway/tws_settings
    networks:
      - trading

  ibkr-telegram:
    image: drumsergio/ibkr-telegram:0.1.33
    container_name: ibkr-telegram
    restart: unless-stopped
    environment:
      TELEGRAM_BOT_TOKEN: ${TELEGRAM_BOT_TOKEN}
      TELEGRAM_ADMIN_CHAT_ID: ${TELEGRAM_ADMIN_CHAT_ID}
      WEBHOOK_SECRET: ${WEBHOOK_SECRET:-}
      WEBHOOK_PORT: ${WEBHOOK_PORT:-8080}
      CONFIG_PATH: /app/config.yaml
    volumes:
      - ./config.yaml:/app/config.yaml:ro
      - ./data:/app/data
    # NOTE: /pause and /resume require Docker access. Use a docker-socket-proxy
    # or manage gateway containers externally. Do NOT mount docker.sock directly.
    depends_on:
      ib-gateway:
        condition: service_started
    networks:
      - trading
    read_only: true
    tmpfs:
      - /tmp
    cap_drop:
      - ALL
    security_opt:
      - no-new-privileges:true
    healthcheck:
      test: ["CMD-SHELL", "python -c 'import urllib.request; urllib.request.urlopen(\"http://localhost:8080/health\")'"]
      interval: 30s
      timeout: 5s
      retries: 3
      start_period: 15s

networks:
  trading:
    name: trading
    driver: bridge