claude-code-tracker/Dockerfile

53 lines
1.3 KiB
Text
Raw Permalink Normal View History

# Use Python 3.12 slim image
FROM python:3.12-slim
# Set environment variables
ENV PYTHONDONTWRITEBYTECODE=1 \
PYTHONUNBUFFERED=1 \
UV_CACHE_DIR=/tmp/uv-cache
# Install system dependencies
RUN apt-get update && apt-get install -y \
curl \
git \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# Install uv
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
# Create app directory
WORKDIR /app
# Copy dependency files and README first for better caching
COPY pyproject.toml uv.lock README.md ./
# Install dependencies
RUN uv sync --frozen --no-cache --no-dev
# Copy application code
COPY . .
# Create data directory for SQLite database with proper permissions
RUN mkdir -p /app/data && chmod 777 /app/data
# Expose port
EXPOSE 8000
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
CMD curl -f http://localhost:8000/health || exit 1
# Copy initialization script
COPY init_db.py ./
# Create startup script
RUN echo '#!/bin/bash\n\
echo "Ensuring database is initialized..."\n\
/app/.venv/bin/python init_db.py\n\
echo "Starting application..."\n\
exec /app/.venv/bin/python -m uvicorn main:app --host 0.0.0.0 --port 8000' > start.sh && \
chmod +x start.sh
# Run the application
CMD ["./start.sh"]