190 lines
5.6 KiB
Bash
Executable file
190 lines
5.6 KiB
Bash
Executable file
#!/bin/bash
|
|
|
|
# Trading Bot Docker Management Script
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
CYAN='\033[0;36m'
|
|
GRAY='\033[0;37m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Default options
|
|
ACTION=""
|
|
SERVICE=""
|
|
DEV=false
|
|
|
|
show_help() {
|
|
echo ""
|
|
echo -e "${GREEN}🤖 Trading Bot Docker Management${NC}"
|
|
echo ""
|
|
echo -e "${CYAN}Usage: $0 <action> [options]${NC}"
|
|
echo ""
|
|
echo -e "${YELLOW}Actions:${NC}"
|
|
echo " start Start infrastructure services"
|
|
echo " stop Stop infrastructure services"
|
|
echo " restart Restart infrastructure services"
|
|
echo " status Show service status"
|
|
echo " logs Show service logs"
|
|
echo " reset Reset all data (destructive)"
|
|
echo " admin Start admin interfaces"
|
|
echo " monitoring Start monitoring stack"
|
|
echo " help Show this help"
|
|
echo ""
|
|
echo -e "${YELLOW}Options:${NC}"
|
|
echo " --service <name> Specify a specific service"
|
|
echo " --dev Use development configuration"
|
|
echo ""
|
|
echo -e "${CYAN}Examples:${NC}"
|
|
echo " $0 start"
|
|
echo " $0 start --dev"
|
|
echo " $0 logs --service dragonfly"
|
|
echo " $0 admin"
|
|
}
|
|
|
|
# Parse command line arguments
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
start|stop|restart|status|logs|reset|admin|monitoring|help)
|
|
ACTION="$1"
|
|
shift
|
|
;;
|
|
--service|-s)
|
|
SERVICE="$2"
|
|
shift 2
|
|
;;
|
|
--dev|-d)
|
|
DEV=true
|
|
shift
|
|
;;
|
|
--help|-h)
|
|
show_help
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
echo "Use --help for usage information"
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$ACTION" ]; then
|
|
echo "Error: Action is required"
|
|
show_help
|
|
exit 1
|
|
fi
|
|
|
|
# Set up compose files
|
|
if [ "$DEV" = true ]; then
|
|
COMPOSE_FILES="-f docker-compose.yml -f docker-compose.dev.yml"
|
|
else
|
|
COMPOSE_FILES="-f docker-compose.yml"
|
|
fi
|
|
|
|
case "$ACTION" in
|
|
"start")
|
|
echo -e "${GREEN}🚀 Starting Trading Bot infrastructure...${NC}"
|
|
if [ -n "$SERVICE" ]; then
|
|
docker-compose $COMPOSE_FILES up -d "$SERVICE"
|
|
else
|
|
docker-compose $COMPOSE_FILES up -d dragonfly postgres questdb
|
|
fi
|
|
echo -e "${GREEN}✅ Infrastructure started!${NC}"
|
|
echo ""
|
|
echo -e "${CYAN}🔗 Access Points:${NC}"
|
|
echo " Dragonfly: localhost:6379"
|
|
echo " PostgreSQL: localhost:5432"
|
|
echo " QuestDB Console: http://localhost:9000"
|
|
echo ""
|
|
echo -e "${BLUE}💡 Use '$0 admin' to start admin interfaces${NC}"
|
|
;;
|
|
|
|
"stop")
|
|
echo -e "${YELLOW}🛑 Stopping Trading Bot infrastructure...${NC}"
|
|
if [ -n "$SERVICE" ]; then
|
|
docker-compose $COMPOSE_FILES stop "$SERVICE"
|
|
else
|
|
docker-compose $COMPOSE_FILES down
|
|
fi
|
|
echo -e "${GREEN}✅ Infrastructure stopped!${NC}"
|
|
;;
|
|
|
|
"restart")
|
|
echo -e "${YELLOW}🔄 Restarting Trading Bot infrastructure...${NC}"
|
|
if [ -n "$SERVICE" ]; then
|
|
docker-compose $COMPOSE_FILES restart "$SERVICE"
|
|
else
|
|
docker-compose $COMPOSE_FILES restart
|
|
fi
|
|
echo -e "${GREEN}✅ Infrastructure restarted!${NC}"
|
|
;;
|
|
|
|
"status")
|
|
echo -e "${CYAN}📊 Trading Bot Infrastructure Status:${NC}"
|
|
docker-compose $COMPOSE_FILES ps
|
|
echo ""
|
|
echo -e "${CYAN}🔍 Health Checks:${NC}"
|
|
docker ps --filter "name=trading-bot" --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
|
|
;;
|
|
|
|
"logs")
|
|
if [ -n "$SERVICE" ]; then
|
|
echo -e "${CYAN}📋 Logs for $SERVICE:${NC}"
|
|
docker-compose $COMPOSE_FILES logs -f "$SERVICE"
|
|
else
|
|
echo -e "${CYAN}📋 All service logs:${NC}"
|
|
docker-compose $COMPOSE_FILES logs -f
|
|
fi
|
|
;;
|
|
|
|
"reset")
|
|
echo -e "${RED}⚠️ Resetting Trading Bot infrastructure (will delete all data)...${NC}"
|
|
read -p "Are you sure? Type 'yes' to confirm: " confirm
|
|
if [ "$confirm" = "yes" ]; then
|
|
docker-compose $COMPOSE_FILES down -v
|
|
echo -e "${YELLOW}🗑️ Volumes removed${NC}"
|
|
docker-compose $COMPOSE_FILES up -d dragonfly postgres questdb
|
|
echo -e "${GREEN}✅ Infrastructure reset complete!${NC}"
|
|
else
|
|
echo -e "${YELLOW}❌ Reset cancelled${NC}"
|
|
fi
|
|
;;
|
|
|
|
"admin")
|
|
echo -e "${GREEN}🔧 Starting admin interfaces...${NC}"
|
|
docker-compose $COMPOSE_FILES up -d redis-insight pgadmin
|
|
echo -e "${GREEN}✅ Admin interfaces started!${NC}"
|
|
echo ""
|
|
echo -e "${CYAN}🔗 Admin Access:${NC}"
|
|
echo " Redis Insight: http://localhost:8001"
|
|
echo " PgAdmin: http://localhost:8080"
|
|
echo " Email: admin@tradingbot.local"
|
|
echo " Password: admin123"
|
|
;;
|
|
|
|
"monitoring")
|
|
echo -e "${GREEN}📊 Starting monitoring stack...${NC}"
|
|
docker-compose $COMPOSE_FILES up -d prometheus grafana loki
|
|
echo -e "${GREEN}✅ Monitoring started!${NC}"
|
|
echo ""
|
|
echo -e "${CYAN}🔗 Monitoring Access:${NC}"
|
|
echo " Prometheus: http://localhost:9090"
|
|
echo " Grafana: http://localhost:3000"
|
|
echo " Username: admin"
|
|
echo " Password: admin"
|
|
echo " Loki: http://localhost:3100"
|
|
;;
|
|
|
|
"help")
|
|
show_help
|
|
;;
|
|
|
|
*)
|
|
echo "Unknown action: $ACTION"
|
|
show_help
|
|
exit 1
|
|
;;
|
|
esac
|