Team Ai
Modelpublic

ParallelLLC/algorithmic_trading

sourceHugging Faceapache-2.0updated 2mo agoView on Hugging Face
27likes35downloads
docker-hub-deploy.sh215 linesDownload Raw Back to scripts
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# Default values28DOCKER_USERNAME=""29IMAGE_NAME="algorithmic-trading"30TAG="latest"31REGISTRY="docker.io"32 33# Function to show help34show_help() {35    echo "Usage: $0 [OPTIONS]"36    echo ""37    echo "Options:"38    echo "  -u, --username USERNAME    Docker Hub username (required)"39    echo "  -i, --image IMAGE_NAME     Image name (default: algorithmic-trading)"40    echo "  -t, --tag TAG              Tag (default: latest)"41    echo "  -r, --registry REGISTRY    Registry URL (default: docker.io)"42    echo "  -h, --help                 Show this help message"43    echo ""44    echo "Examples:"45    echo "  $0 -u myusername"46    echo "  $0 -u myusername -i my-trading-system -t v1.0.0"47    echo ""48    echo "Environment Variables:"49    echo "  DOCKER_USERNAME            Set your Docker Hub username"50    echo "  DOCKER_PASSWORD            Set your Docker Hub password/token"51}52 53# Parse command line arguments54while [[ $# -gt 0 ]]; do55    case $1 in56        -u|--username)57            DOCKER_USERNAME="$2"58            shift 259            ;;60        -i|--image)61            IMAGE_NAME="$2"62            shift 263            ;;64        -t|--tag)65            TAG="$2"66            shift 267            ;;68        -r|--registry)69            REGISTRY="$2"70            shift 271            ;;72        -h|--help)73            show_help74            exit 075            ;;76        *)77            print_error "Unknown option: $1"78            show_help79            exit 180            ;;81    esac82done83 84# Check if username is provided85if [ -z "$DOCKER_USERNAME" ]; then86    if [ -n "$DOCKER_USERNAME" ]; then87        DOCKER_USERNAME="$DOCKER_USERNAME"88    else89        print_error "Docker Hub username is required!"90        echo "Use -u option or set DOCKER_USERNAME environment variable"91        show_help92        exit 193    fi94fi95 96# Function to build the image97build_image() {98    print_status "Building Docker image..."99    docker build -t ${IMAGE_NAME}:${TAG} .100    if [ $? -eq 0 ]; then101        print_success "Docker image built successfully"102    else103        print_error "Failed to build Docker image"104        exit 1105    fi106}107 108# Function to login to Docker Hub109login_to_dockerhub() {110    print_status "Logging in to Docker Hub..."111    if [ -n "$DOCKER_PASSWORD" ]; then112        echo "$DOCKER_PASSWORD" | docker login -u "$DOCKER_USERNAME" --password-stdin113    else114        docker login -u "$DOCKER_USERNAME"115    fi116    117    if [ $? -eq 0 ]; then118        print_success "Successfully logged in to Docker Hub"119    else120        print_error "Failed to login to Docker Hub"121        exit 1122    fi123}124 125# Function to tag the image126tag_image() {127    local full_image_name="${REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${TAG}"128    print_status "Tagging image as: $full_image_name"129    docker tag ${IMAGE_NAME}:${TAG} "$full_image_name"130    if [ $? -eq 0 ]; then131        print_success "Image tagged successfully"132        echo "$full_image_name"133    else134        print_error "Failed to tag image"135        exit 1136    fi137}138 139# Function to push the image140push_image() {141    local full_image_name="${REGISTRY}/${DOCKER_USERNAME}/${IMAGE_NAME}:${TAG}"142    print_status "Pushing image to Docker Hub: $full_image_name"143    docker push "$full_image_name"144    if [ $? -eq 0 ]; then145        print_success "Image pushed successfully to Docker Hub!"146        print_status "You can now pull it with:"147        echo "  docker pull $full_image_name"148        print_status "Or use it in docker-compose with:"149        echo "  image: $full_image_name"150    else151        print_error "Failed to push image to Docker Hub"152        exit 1153    fi154}155 156# Function to run tests before pushing157run_tests() {158    print_status "Running tests before deployment..."159    docker run --rm -v $(pwd):/app ${IMAGE_NAME}:${TAG} pytest -v --tb=short160    if [ $? -eq 0 ]; then161        print_success "Tests passed"162    else163        print_warning "Some tests failed, but continuing with deployment..."164    fi165}166 167# Function to clean up local images168cleanup() {169    print_status "Cleaning up local images..."170    docker rmi ${IMAGE_NAME}:${TAG} 2>/dev/null || true171    print_success "Cleanup completed"172}173 174# Main deployment process175main() {176    print_status "Starting Docker Hub deployment..."177    print_status "Username: $DOCKER_USERNAME"178    print_status "Image: $IMAGE_NAME"179    print_status "Tag: $TAG"180    print_status "Registry: $REGISTRY"181    echo ""182    183    # Build the image184    build_image185    186    # Run tests (optional)187    read -p "Run tests before deployment? (y/n): " -n 1 -r188    echo189    if [[ $REPLY =~ ^[Yy]$ ]]; then190        run_tests191    fi192    193    # Login to Docker Hub194    login_to_dockerhub195    196    # Tag the image197    local full_image_name=$(tag_image)198    199    # Push the image200    push_image201    202    # Cleanup203    read -p "Clean up local images? (y/n): " -n 1 -r204    echo205    if [[ $REPLY =~ ^[Yy]$ ]]; then206        cleanup207    fi208    209    print_success "Deployment completed successfully!"210    print_status "Your image is now available at:"211    echo "  https://hub.docker.com/r/${DOCKER_USERNAME}/${IMAGE_NAME}"212}213 214# Run main function215main "$@"