NoteSnap / DOCKER.md
Prateek-044's picture
Upload 24 files
e9cd410 verified

A newer version of the Streamlit SDK is available: 1.57.0

Upgrade

🐳 Docker Deployment Guide

This guide covers Docker deployment options for the AI Notes Summarizer application.

πŸ“‹ Prerequisites

  • Docker Engine 20.10+
  • Docker Compose 2.0+
  • At least 4GB RAM available for Docker
  • Internet connection for downloading AI models

πŸš€ Quick Start

Using Docker Compose (Recommended)

# Clone the repository
git clone <repository-url>
cd ai-notes-summarizer

# Start the application
docker-compose up -d

# Access at http://localhost:8501

Using Docker Scripts

# Build the image
./docker-build.sh

# Run the container
./docker-run.sh

# Test the deployment
./docker-test.sh

πŸ“ Docker Files Overview

File Purpose
Dockerfile Standard multi-stage build
Dockerfile.prod Production-optimized build
docker-compose.yml Production deployment
docker-compose.dev.yml Development environment
docker-build.sh Build script
docker-run.sh Run script
docker-dev.sh Development script
docker-test.sh Testing script

πŸ”§ Configuration

Environment Variables

Variable Default Description
STREAMLIT_SERVER_PORT 8501 Application port
STREAMLIT_SERVER_ADDRESS 0.0.0.0 Bind address
TRANSFORMERS_CACHE /app/.cache/huggingface Model cache directory
MAX_FILE_SIZE_MB 10 Maximum PDF file size
TORCH_HOME /app/.cache/torch PyTorch cache

Volume Mounts

Volume Purpose
model_cache Persistent AI model storage
logs Application logs
uploads Temporary file storage

πŸ—οΈ Build Options

Standard Build

docker build -t ai-notes-summarizer .

Production Build

docker build -f Dockerfile.prod -t ai-notes-summarizer:prod .

Development Build

docker build --target dependencies -t ai-notes-summarizer:dev .

πŸš€ Deployment Options

1. Docker Compose (Production)

# docker-compose.yml
version: '3.8'
services:
  ai-notes-summarizer:
    image: ai-notes-summarizer:latest
    ports:
      - "8501:8501"
    volumes:
      - model_cache:/app/.cache
      - logs:/app/logs
    restart: unless-stopped

2. Docker Swarm

# Initialize swarm
docker swarm init

# Deploy stack
docker stack deploy -c docker-compose.yml ai-notes-stack

3. Kubernetes

# k8s-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: ai-notes-summarizer
spec:
  replicas: 2
  selector:
    matchLabels:
      app: ai-notes-summarizer
  template:
    metadata:
      labels:
        app: ai-notes-summarizer
    spec:
      containers:
      - name: ai-notes-summarizer
        image: ai-notes-summarizer:latest
        ports:
        - containerPort: 8501
        resources:
          limits:
            memory: "4Gi"
            cpu: "2"
          requests:
            memory: "2Gi"
            cpu: "1"

πŸ” Monitoring and Logging

Health Checks

# Check container health
docker ps --filter "name=ai-notes-summarizer"

# View health check logs
docker inspect ai-notes-summarizer | grep -A 10 Health

Logs

# View application logs
docker-compose logs -f

# View specific service logs
docker logs -f ai-notes-summarizer

Metrics

# Container stats
docker stats ai-notes-summarizer

# Resource usage
docker exec ai-notes-summarizer df -h
docker exec ai-notes-summarizer free -h

πŸ› οΈ Development

Development Environment

# Start development environment with live reload
docker-compose -f docker-compose.dev.yml up

# Or use the script
./docker-dev.sh

Debugging

# Access container shell
docker exec -it ai-notes-summarizer bash

# View application files
docker exec ai-notes-summarizer ls -la /app

# Check Python environment
docker exec ai-notes-summarizer pip list

πŸ”’ Security

Security Features

  • Non-root user execution
  • Minimal base image
  • No unnecessary packages
  • Health checks enabled
  • Resource limits configured

Security Scanning

# Scan for vulnerabilities (if you have docker scan)
docker scan ai-notes-summarizer:latest

# Check running processes
docker exec ai-notes-summarizer ps aux

🚨 Troubleshooting

Common Issues

  1. Container won't start

    docker logs ai-notes-summarizer
    
  2. Out of memory

    # Increase Docker memory limit
    docker update --memory=4g ai-notes-summarizer
    
  3. Model download fails

    # Check internet connectivity
    docker exec ai-notes-summarizer curl -I https://huggingface.co
    
  4. Permission issues

    # Fix ownership
    docker exec -u root ai-notes-summarizer chown -R app:app /app
    

Performance Optimization

  1. Use multi-stage builds (already implemented)
  2. Enable BuildKit:
    export DOCKER_BUILDKIT=1
    docker build .
    
  3. Use .dockerignore (already included)
  4. Pin dependency versions (see requirements.docker.txt)

πŸ“Š Resource Requirements

Minimum Requirements

  • CPU: 1 core
  • RAM: 2GB
  • Storage: 5GB

Recommended Requirements

  • CPU: 2 cores
  • RAM: 4GB
  • Storage: 10GB

Production Requirements

  • CPU: 4 cores
  • RAM: 8GB
  • Storage: 20GB
  • Load balancer for multiple instances

πŸ”„ Updates and Maintenance

Updating the Application

# Pull latest changes
git pull

# Rebuild and restart
docker-compose up --build -d

# Or use rolling update
docker-compose up -d --force-recreate

Backup and Restore

# Backup volumes
docker run --rm -v ai-notes-model-cache:/data -v $(pwd):/backup alpine tar czf /backup/model-cache-backup.tar.gz -C /data .

# Restore volumes
docker run --rm -v ai-notes-model-cache:/data -v $(pwd):/backup alpine tar xzf /backup/model-cache-backup.tar.gz -C /data

πŸ“ž Support

For Docker-specific issues:

  1. Check container logs: docker logs ai-notes-summarizer
  2. Verify resource limits: docker stats
  3. Test connectivity: docker exec ai-notes-summarizer curl localhost:8501
  4. Review Docker documentation: https://docs.docker.com