This repository has been archived on 2025-02-10. You can view files and clone it, but cannot push or open issues or pull requests.
lastin-ai/docker/Dockerfile

62 lines
1.5 KiB
Docker

# Build stage
FROM python:3.8-slim-bullseye as builder
# Install system dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends \
build-essential \
libpq-dev && \
rm -rf /var/lib/apt/lists/*
# Create non-root user
RUN groupadd -r appuser && \
useradd -r -g appuser appuser
WORKDIR /app
COPY requirements.txt .
# Install dependencies as non-root user
USER appuser
RUN pip install --user --no-cache-dir -r requirements.txt
# Production stage
FROM python:3.8-slim-bullseye as production
# Runtime dependencies
RUN apt-get update && \
apt-get install -y --no-install-recommends \
libpq5 \
curl && \
rm -rf /var/lib/apt/lists/*
# Create non-root user
RUN groupadd -r appuser && \
useradd -r -g appuser appuser && \
mkdir -p /home/appuser/.local && \
chown -R appuser:appuser /home/appuser
WORKDIR /app
# Copy application code
COPY --chown=appuser:appuser . .
COPY --from=builder --chown=appuser:appuser /home/appuser/.local /home/appuser/.local
# Create and set permissions for runtime directories
RUN mkdir -p /app/cache /app/data /app/logs && \
chown -R appuser:appuser /app
USER appuser
ENV PATH=/home/appuser/.local/bin:$PATH
ENV PYTHONPATH=/app
# Application environment variables
ENV CACHE_DIR=/app/cache \
VECTOR_STORE_PATH=/app/data \
LOG_PATH=/app/logs \
PYTHONUNBUFFERED=1
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost:8000/health || exit 1
CMD ["python", "-m", "src.orchestration.agent_controller"]