Commit All
This commit is contained in:
		
							
								
								
									
										180
									
								
								deploy.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										180
									
								
								deploy.sh
									
									
									
									
									
										Executable file
									
								
							@@ -0,0 +1,180 @@
 | 
			
		||||
#!/bin/bash
 | 
			
		||||
 | 
			
		||||
# Turmli Bar Calendar Tool - Simple Docker Deployment Script
 | 
			
		||||
# For internal use - no nginx, no SSL, just the calendar app
 | 
			
		||||
 | 
			
		||||
set -e  # Exit on error
 | 
			
		||||
 | 
			
		||||
# Colors for output
 | 
			
		||||
RED='\033[0;31m'
 | 
			
		||||
GREEN='\033[0;32m'
 | 
			
		||||
YELLOW='\033[1;33m'
 | 
			
		||||
BLUE='\033[0;34m'
 | 
			
		||||
NC='\033[0m' # No Color
 | 
			
		||||
 | 
			
		||||
# Configuration
 | 
			
		||||
APP_NAME="turmli-calendar"
 | 
			
		||||
IMAGE_NAME="turmli-calendar:latest"
 | 
			
		||||
CONTAINER_NAME="turmli-calendar"
 | 
			
		||||
DEFAULT_PORT=8000
 | 
			
		||||
 | 
			
		||||
# Functions
 | 
			
		||||
print_header() {
 | 
			
		||||
    echo -e "${BLUE}================================${NC}"
 | 
			
		||||
    echo -e "${BLUE}  Turmli Bar Calendar Deployment${NC}"
 | 
			
		||||
    echo -e "${BLUE}================================${NC}"
 | 
			
		||||
    echo ""
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print_success() {
 | 
			
		||||
    echo -e "${GREEN}✓${NC} $1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print_error() {
 | 
			
		||||
    echo -e "${RED}✗${NC} $1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
print_info() {
 | 
			
		||||
    echo -e "${BLUE}ℹ${NC} $1"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
check_docker() {
 | 
			
		||||
    if ! command -v docker &> /dev/null; then
 | 
			
		||||
        print_error "Docker is not installed. Please install Docker first."
 | 
			
		||||
        exit 1
 | 
			
		||||
    fi
 | 
			
		||||
    print_success "Docker is installed"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
build() {
 | 
			
		||||
    print_info "Building Docker image..."
 | 
			
		||||
    docker build -t ${IMAGE_NAME} . || {
 | 
			
		||||
        print_error "Failed to build Docker image"
 | 
			
		||||
        exit 1
 | 
			
		||||
    }
 | 
			
		||||
    print_success "Docker image built successfully"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
start() {
 | 
			
		||||
    print_info "Starting calendar application..."
 | 
			
		||||
    
 | 
			
		||||
    # Check if container already exists
 | 
			
		||||
    if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
 | 
			
		||||
        print_info "Container already exists, removing it..."
 | 
			
		||||
        docker rm -f ${CONTAINER_NAME}
 | 
			
		||||
    fi
 | 
			
		||||
    
 | 
			
		||||
    # Get port from environment or use default
 | 
			
		||||
    PORT="${PORT:-$DEFAULT_PORT}"
 | 
			
		||||
    
 | 
			
		||||
    # Run container
 | 
			
		||||
    docker run -d \
 | 
			
		||||
        --name ${CONTAINER_NAME} \
 | 
			
		||||
        -p ${PORT}:8000 \
 | 
			
		||||
        -v $(pwd)/calendar_cache.json:/app/calendar_cache.json \
 | 
			
		||||
        -e TZ=Europe/Berlin \
 | 
			
		||||
        --restart unless-stopped \
 | 
			
		||||
        ${IMAGE_NAME}
 | 
			
		||||
    
 | 
			
		||||
    print_success "Application started on port ${PORT}"
 | 
			
		||||
    print_info "Access the calendar at: http://localhost:${PORT}"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
stop() {
 | 
			
		||||
    print_info "Stopping calendar application..."
 | 
			
		||||
    docker stop ${CONTAINER_NAME} 2>/dev/null || true
 | 
			
		||||
    docker rm ${CONTAINER_NAME} 2>/dev/null || true
 | 
			
		||||
    print_success "Application stopped"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
restart() {
 | 
			
		||||
    stop
 | 
			
		||||
    start
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
logs() {
 | 
			
		||||
    docker logs -f ${CONTAINER_NAME}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
status() {
 | 
			
		||||
    echo -e "${BLUE}Container Status:${NC}"
 | 
			
		||||
    if docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep -q ${CONTAINER_NAME}; then
 | 
			
		||||
        docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}" | grep -E "NAMES|${CONTAINER_NAME}"
 | 
			
		||||
        echo ""
 | 
			
		||||
        print_info "Testing application..."
 | 
			
		||||
        if curl -s -f http://localhost:${PORT:-$DEFAULT_PORT}/api/events > /dev/null 2>&1; then
 | 
			
		||||
            print_success "Application is healthy and responding"
 | 
			
		||||
        else
 | 
			
		||||
            print_error "Application is not responding"
 | 
			
		||||
        fi
 | 
			
		||||
    else
 | 
			
		||||
        print_info "Container is not running"
 | 
			
		||||
    fi
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
update() {
 | 
			
		||||
    print_info "Updating application..."
 | 
			
		||||
    
 | 
			
		||||
    # Pull latest changes if using git
 | 
			
		||||
    if [ -d .git ]; then
 | 
			
		||||
        print_info "Pulling latest changes..."
 | 
			
		||||
        git pull
 | 
			
		||||
    fi
 | 
			
		||||
    
 | 
			
		||||
    # Rebuild and restart
 | 
			
		||||
    build
 | 
			
		||||
    restart
 | 
			
		||||
    print_success "Application updated"
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
# Parse command
 | 
			
		||||
print_header
 | 
			
		||||
 | 
			
		||||
case "$1" in
 | 
			
		||||
    build)
 | 
			
		||||
        check_docker
 | 
			
		||||
        build
 | 
			
		||||
        ;;
 | 
			
		||||
    start)
 | 
			
		||||
        check_docker
 | 
			
		||||
        build
 | 
			
		||||
        start
 | 
			
		||||
        ;;
 | 
			
		||||
    stop)
 | 
			
		||||
        stop
 | 
			
		||||
        ;;
 | 
			
		||||
    restart)
 | 
			
		||||
        check_docker
 | 
			
		||||
        restart
 | 
			
		||||
        ;;
 | 
			
		||||
    logs)
 | 
			
		||||
        logs
 | 
			
		||||
        ;;
 | 
			
		||||
    status)
 | 
			
		||||
        status
 | 
			
		||||
        ;;
 | 
			
		||||
    update)
 | 
			
		||||
        check_docker
 | 
			
		||||
        update
 | 
			
		||||
        ;;
 | 
			
		||||
    *)
 | 
			
		||||
        echo "Usage: $0 {build|start|stop|restart|logs|status|update}"
 | 
			
		||||
        echo ""
 | 
			
		||||
        echo "Commands:"
 | 
			
		||||
        echo "  build    - Build Docker image"
 | 
			
		||||
        echo "  start    - Build and start the application"
 | 
			
		||||
        echo "  stop     - Stop the application"
 | 
			
		||||
        echo "  restart  - Restart the application"
 | 
			
		||||
        echo "  logs     - View application logs"
 | 
			
		||||
        echo "  status   - Check application status"
 | 
			
		||||
        echo "  update   - Update and restart application"
 | 
			
		||||
        echo ""
 | 
			
		||||
        echo "Environment variables:"
 | 
			
		||||
        echo "  PORT     - Port to expose (default: 8000)"
 | 
			
		||||
        echo ""
 | 
			
		||||
        echo "Example:"
 | 
			
		||||
        echo "  $0 start              # Start on port 8000"
 | 
			
		||||
        echo "  PORT=8080 $0 start    # Start on port 8080"
 | 
			
		||||
        exit 1
 | 
			
		||||
        ;;
 | 
			
		||||
esac
 | 
			
		||||
		Reference in New Issue
	
	Block a user