ParallelLLC/algorithmic_trading
2736
1#!/bin/bash2 3# Colors for output4RED='\033[0;31m'5GREEN='\033[0;32m'6YELLOW='\033[1;33m'7BLUE='\033[0;34m'8NC='\033[0m' # No Color9 10# Function to print colored output11print_status() {12 echo -e "${BLUE}[INFO]${NC} $1"13}14 15print_success() {16 echo -e "${GREEN}[SUCCESS]${NC} $1"17}18 19print_warning() {20 echo -e "${YELLOW}[WARNING]${NC} $1"21}22 23print_error() {24 echo -e "${RED}[ERROR]${NC} $1"25}26 27# Function to build the Docker image28build_image() {29 print_status "Building Docker image..."30 docker build -t algorithmic-trading:latest .31 if [ $? -eq 0 ]; then32 print_success "Docker image built successfully"33 else34 print_error "Failed to build Docker image"35 exit 136 fi37}38 39# Function to run tests in Docker40run_tests() {41 print_status "Running tests in Docker..."42 docker run --rm -v $(pwd):/app algorithmic-trading:latest pytest -v43 if [ $? -eq 0 ]; then44 print_success "Tests passed"45 else46 print_error "Tests failed"47 exit 148 fi49}50 51# Function to start development environment52start_dev() {53 print_status "Starting development environment..."54 docker-compose -f docker-compose.dev.yml up -d55 print_success "Development environment started"56 print_status "Jupyter Lab available at: http://localhost:8888"57 print_status "Trading system available at: http://localhost:8000"58 print_status "TensorBoard available at: http://localhost:6006"59}60 61# Function to start production environment62start_prod() {63 print_status "Starting production environment..."64 docker-compose -f docker-compose.prod.yml up -d65 print_success "Production environment started"66 print_status "Trading system available at: http://localhost:8000"67 print_status "Grafana available at: http://localhost:3000 (admin/admin)"68 print_status "Prometheus available at: http://localhost:9090"69}70 71# Function to stop all containers72stop_all() {73 print_status "Stopping all containers..."74 docker-compose -f docker-compose.yml down75 docker-compose -f docker-compose.dev.yml down76 docker-compose -f docker-compose.prod.yml down77 print_success "All containers stopped"78}79 80# Function to clean up Docker resources81cleanup() {82 print_status "Cleaning up Docker resources..."83 docker system prune -f84 docker volume prune -f85 print_success "Cleanup completed"86}87 88# Function to show logs89show_logs() {90 local service=${1:-trading-system}91 print_status "Showing logs for $service..."92 docker-compose logs -f $service93}94 95# Function to run a specific command in the container96run_command() {97 local command="$1"98 print_status "Running command: $command"99 docker run --rm -v $(pwd):/app algorithmic-trading:latest $command100}101 102# Function to show help103show_help() {104 echo "Usage: $0 [COMMAND]"105 echo ""106 echo "Commands:"107 echo " build Build the Docker image"108 echo " test Run tests in Docker"109 echo " dev Start development environment"110 echo " prod Start production environment"111 echo " hub Start using Docker Hub images"112 echo " stop Stop all containers"113 echo " cleanup Clean up Docker resources"114 echo " logs [SVC] Show logs for a service (default: trading-system)"115 echo " run CMD Run a specific command in the container"116 echo " deploy Deploy to Docker Hub (requires docker-hub-deploy.sh)"117 echo " help Show this help message"118 echo ""119 echo "Examples:"120 echo " $0 build"121 echo " $0 dev"122 echo " $0 hub"123 echo " $0 logs"124 echo " $0 run 'python demo.py'"125 echo " $0 deploy"126}127 128# Main script logic129case "${1:-help}" in130 build)131 build_image132 ;;133 test)134 build_image135 run_tests136 ;;137 dev)138 build_image139 start_dev140 ;;141 prod)142 build_image143 start_prod144 ;;145 stop)146 stop_all147 ;;148 cleanup)149 cleanup150 ;;151 logs)152 show_logs $2153 ;;154 run)155 if [ -z "$2" ]; then156 print_error "No command specified"157 show_help158 exit 1159 fi160 build_image161 run_command "$2"162 ;;163 hub)164 print_status "Starting services using Docker Hub images..."165 if [ -z "$DOCKER_USERNAME" ]; then166 print_error "DOCKER_USERNAME environment variable not set"167 print_status "Please set it: export DOCKER_USERNAME=yourusername"168 exit 1169 fi170 docker compose -f docker-compose.hub.yml up -d171 print_success "Docker Hub services started"172 print_status "Trading system available at: http://localhost:8000"173 print_status "Jupyter Lab available at: http://localhost:8888"174 ;;175 deploy)176 print_status "Deploying to Docker Hub..."177 if [ -f "scripts/docker-hub-deploy.sh" ]; then178 ./scripts/docker-hub-deploy.sh "$@"179 else180 print_error "docker-hub-deploy.sh not found"181 exit 1182 fi183 ;;184 help|*)185 show_help186 ;;187esac 