claude-code-tracker/docker-deploy.sh
Ryan Malloy 50c80596d0 Add comprehensive Docker deployment and file upload functionality
Features Added:
• Docker containerization with multi-stage Python 3.12 build
• Caddy reverse proxy integration with automatic SSL
• File upload interface for .claude.json imports with preview
• Comprehensive hook system with 39+ hook types across 9 categories
• Complete documentation system with Docker and import guides

Technical Improvements:
• Enhanced database models with hook tracking capabilities
• Robust file validation and error handling for uploads
• Production-ready Docker compose configuration
• Health checks and resource limits for containers
• Database initialization scripts for containerized deployments

Documentation:
• Docker Deployment Guide with troubleshooting
• Data Import Guide with step-by-step instructions
• Updated Getting Started guide with new features
• Enhanced documentation index with responsive grid layout

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-11 08:02:09 -06:00

123 lines
3.2 KiB
Bash
Executable File

#!/bin/bash
# Claude Code Tracker Docker Deployment Script
set -e
echo "🚀 Deploying Claude Code Tracker with Docker..."
# 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"
}
# Check if .env file exists
if [ ! -f ".env" ]; then
print_warning ".env file not found. Creating from .env.example..."
cp .env.example .env
print_status "Please edit .env file to configure your domain and other settings"
fi
# Check if Caddy network exists
if ! docker network ls | grep -q "caddy"; then
print_warning "Caddy network not found. Creating external network..."
docker network create caddy
print_success "Created 'caddy' external network"
else
print_status "Caddy network already exists"
fi
# Create data directory if it doesn't exist
if [ ! -d "./data" ]; then
print_status "Creating data directory..."
mkdir -p ./data
fi
# Set permissions for data directory
chmod 755 ./data
print_status "Building and starting containers..."
# Build and start the containers
docker-compose up -d --build
# Wait for the service to be ready
print_status "Waiting for service to be ready..."
sleep 10
# Check if the service is healthy
if docker-compose ps | grep -q "Up (healthy)"; then
print_success "Claude Code Tracker is running and healthy!"
else
print_warning "Service is starting up. Checking logs..."
docker-compose logs --tail=20 claude-tracker
fi
# Display useful information
echo ""
echo "📋 Deployment Information:"
echo "=========================="
print_status "Container name: claude-tracker-api"
print_status "Internal port: 8000"
# Read domain from .env file
if [ -f ".env" ]; then
DOMAIN=$(grep "^DOMAIN=" .env | cut -d'=' -f2)
if [ -n "$DOMAIN" ]; then
print_status "External URL: https://$DOMAIN"
else
print_status "External URL: Configure DOMAIN in .env file"
fi
fi
echo ""
echo "🔧 Management Commands:"
echo "======================"
echo "View logs: docker-compose logs -f claude-tracker"
echo "Restart service: docker-compose restart claude-tracker"
echo "Stop service: docker-compose down"
echo "Update service: docker-compose pull && docker-compose up -d"
echo "Shell access: docker-compose exec claude-tracker /bin/bash"
echo ""
echo "📊 Health Check:"
echo "================"
echo "Container status: docker-compose ps"
echo "Health endpoint: curl http://localhost:8000/health"
echo "API documentation: https://$DOMAIN/docs"
echo "Dashboard: https://$DOMAIN/dashboard"
echo ""
echo "🎯 Hook Configuration:"
echo "====================="
echo "Download pre-built hook configs from:"
echo "https://$DOMAIN/dashboard/docs/hook-reference"
echo ""
print_success "Deployment completed! 🎉"
# Check if Caddy is running
if docker ps | grep -q caddy; then
print_success "Caddy reverse proxy detected"
else
print_warning "Caddy reverse proxy not running. Start it to access via domain."
fi