TradingAgents/docker-compose.dev.yml

124 lines
2.9 KiB
YAML

# Development Docker Compose Configuration
# Use with: docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
version: '3.8'
services:
# === Override main trader service for development ===
trader:
build:
context: .
dockerfile: Dockerfile
# Development build args
args:
- BUILD_ENV=development
environment:
# Development settings
ENVIRONMENT: development
LOG_LEVEL: DEBUG
TRADING_ENABLED: false # Always false in dev
PAPER_TRADING: true # Always paper in dev
# Hot reload
PYTHONUNBUFFERED: 1
FLASK_ENV: development
FLASK_DEBUG: 1
volumes:
# Mount source code for hot reload
- ./:/app:rw
- ./logs:/app/logs:rw
- ./data:/app/data:rw
# Exclude virtual environment
- /app/venv
- /app/.venv
# Override command for development
command: >
sh -c "
echo 'Starting in development mode...'
pip install -e .
python -m watchdog.auto_restart --directory=. --pattern='*.py' --recursive -- python autonomous_trader.py
"
# No resource limits in development
deploy:
resources:
limits:
cpus: '4'
memory: 8G
# === Development Database with sample data ===
postgres:
environment:
POSTGRES_DB: trading_dev
POSTGRES_USER: dev_trader
POSTGRES_PASSWORD: devpass
ports:
- "5433:5432" # Different port for dev
volumes:
- ./dev/sample_data.sql:/docker-entrypoint-initdb.d/02-sample-data.sql:ro
# === Redis with monitoring ===
redis:
ports:
- "6380:6379" # Different port for dev
command: >
redis-server
--maxmemory 512mb
--maxmemory-policy allkeys-lru
--loglevel debug
# === Redis Commander for Redis GUI ===
redis-commander:
image: rediscommander/redis-commander:latest
container_name: trading_redis_commander
environment:
REDIS_HOST: redis
REDIS_PORT: 6379
REDIS_PASSWORD: ${REDIS_PASSWORD:-changeme}
ports:
- "8081:8081"
networks:
- trading_network
depends_on:
- redis
# === Adminer for Database GUI ===
adminer:
image: adminer:latest
container_name: trading_adminer
ports:
- "8082:8080"
environment:
ADMINER_DEFAULT_SERVER: postgres
networks:
- trading_network
depends_on:
- postgres
# === Jupyter Notebook for Research ===
jupyter:
build:
context: .
dockerfile: Dockerfile
container_name: trading_jupyter
command: >
jupyter lab
--ip=0.0.0.0
--port=8888
--no-browser
--allow-root
--NotebookApp.token=''
--NotebookApp.password=''
volumes:
- ./:/app:rw
- ./notebooks:/app/notebooks:rw
ports:
- "8888:8888"
environment:
PYTHONPATH: /app
networks:
- trading_network
profiles:
- research