File size: 5,083 Bytes
6cd35fc 9fb1755 6cd35fc 9fb1755 6cd35fc 9fb1755 6cd35fc 9fb1755 6cd35fc 9fb1755 6cd35fc |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 |
#!/bin/bash
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
# Function to print colored output
print_status() {
echo -e "${BLUE}[INFO]${NC} $1"
}
print_success() {
echo -e "${GREEN}[SUCCESS]${NC} $1"
}
print_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1"
}
print_error() {
echo -e "${RED}[ERROR]${NC} $1"
}
# Function to build the Docker image
build_image() {
print_status "Building Docker image..."
docker build -t algorithmic-trading:latest .
if [ $? -eq 0 ]; then
print_success "Docker image built successfully"
else
print_error "Failed to build Docker image"
exit 1
fi
}
# Function to run tests in Docker
run_tests() {
print_status "Running tests in Docker..."
docker run --rm -v $(pwd):/app algorithmic-trading:latest pytest -v
if [ $? -eq 0 ]; then
print_success "Tests passed"
else
print_error "Tests failed"
exit 1
fi
}
# Function to start development environment
start_dev() {
print_status "Starting development environment..."
docker-compose -f docker-compose.dev.yml up -d
print_success "Development environment started"
print_status "Jupyter Lab available at: http://localhost:8888"
print_status "Trading system available at: http://localhost:8000"
print_status "TensorBoard available at: http://localhost:6006"
}
# Function to start production environment
start_prod() {
print_status "Starting production environment..."
docker-compose -f docker-compose.prod.yml up -d
print_success "Production environment started"
print_status "Trading system available at: http://localhost:8000"
print_status "Grafana available at: http://localhost:3000 (admin/admin)"
print_status "Prometheus available at: http://localhost:9090"
}
# Function to stop all containers
stop_all() {
print_status "Stopping all containers..."
docker-compose -f docker-compose.yml down
docker-compose -f docker-compose.dev.yml down
docker-compose -f docker-compose.prod.yml down
print_success "All containers stopped"
}
# Function to clean up Docker resources
cleanup() {
print_status "Cleaning up Docker resources..."
docker system prune -f
docker volume prune -f
print_success "Cleanup completed"
}
# Function to show logs
show_logs() {
local service=${1:-trading-system}
print_status "Showing logs for $service..."
docker-compose logs -f $service
}
# Function to run a specific command in the container
run_command() {
local command="$1"
print_status "Running command: $command"
docker run --rm -v $(pwd):/app algorithmic-trading:latest $command
}
# Function to show help
show_help() {
echo "Usage: $0 [COMMAND]"
echo ""
echo "Commands:"
echo " build Build the Docker image"
echo " test Run tests in Docker"
echo " dev Start development environment"
echo " prod Start production environment"
echo " hub Start using Docker Hub images"
echo " stop Stop all containers"
echo " cleanup Clean up Docker resources"
echo " logs [SVC] Show logs for a service (default: trading-system)"
echo " run CMD Run a specific command in the container"
echo " deploy Deploy to Docker Hub (requires docker-hub-deploy.sh)"
echo " help Show this help message"
echo ""
echo "Examples:"
echo " $0 build"
echo " $0 dev"
echo " $0 hub"
echo " $0 logs"
echo " $0 run 'python demo.py'"
echo " $0 deploy"
}
# Main script logic
case "${1:-help}" in
build)
build_image
;;
test)
build_image
run_tests
;;
dev)
build_image
start_dev
;;
prod)
build_image
start_prod
;;
stop)
stop_all
;;
cleanup)
cleanup
;;
logs)
show_logs $2
;;
run)
if [ -z "$2" ]; then
print_error "No command specified"
show_help
exit 1
fi
build_image
run_command "$2"
;;
hub)
print_status "Starting services using Docker Hub images..."
if [ -z "$DOCKER_USERNAME" ]; then
print_error "DOCKER_USERNAME environment variable not set"
print_status "Please set it: export DOCKER_USERNAME=yourusername"
exit 1
fi
docker compose -f docker-compose.hub.yml up -d
print_success "Docker Hub services started"
print_status "Trading system available at: http://localhost:8000"
print_status "Jupyter Lab available at: http://localhost:8888"
;;
deploy)
print_status "Deploying to Docker Hub..."
if [ -f "scripts/docker-hub-deploy.sh" ]; then
./scripts/docker-hub-deploy.sh "$@"
else
print_error "docker-hub-deploy.sh not found"
exit 1
fi
;;
help|*)
show_help
;;
esac |