slack_url_bot / Dockerfile
tonebeta's picture
fix: add missing click dependency and improve docker build
bdeda5e
# Dockerfile for Slack URL Summarizer Bot - Hugging Face Spaces
# Hugging Face Spaces requires port 7860
# --- Stage 1: Builder ---
FROM python:3.12-slim AS builder
WORKDIR /app
# Install uv package manager
RUN pip install uv
# Create virtual environment
RUN uv venv /opt/venv
# Copy dependency files
COPY pyproject.toml uv.lock requirements.txt ./
# Install dependencies
RUN . /opt/venv/bin/activate && uv pip install -r requirements.txt --no-cache
# --- Stage 2: Final Image ---
FROM python:3.12-slim
# Install curl for healthcheck
RUN apt-get update && apt-get install -y --no-install-recommends curl && rm -rf /var/lib/apt/lists/*
# Create non-privileged user
RUN useradd --create-home --shell /bin/bash appuser
WORKDIR /home/appuser/app
# Copy virtual environment from builder
COPY --from=builder --chown=appuser:appuser /opt/venv /opt/venv
# Copy application code
COPY --chown=appuser:appuser main.py .
# Switch to non-privileged user
USER appuser
# Set environment variables
# Hugging Face Spaces requires port 7860
ENV PATH="/opt/venv/bin:$PATH"
ENV PYTHONUNBUFFERED=1
ENV PORT=7860
# Expose Hugging Face Spaces required port
EXPOSE 7860
# --- Runtime Configuration ---
# Required environment variables (set in HF Space Secrets):
# - SLACK_BOT_TOKEN
# - SLACK_SIGNING_SECRET
# - AZURE_OPENAI_ENDPOINT
# - AZURE_OPENAI_API_KEY
# Healthcheck
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost:7860/health || exit 1
# Run the application on port 7860
CMD ["uvicorn", "main:api", "--host", "0.0.0.0", "--port", "7860"]