Commit All

This commit is contained in:
2025-10-30 13:33:08 +01:00
commit 3678efed07
31 changed files with 5536 additions and 0 deletions

180
deploy.sh Executable file
View 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