# Base Runtime Image - Contains core dependencies for ALL services # This image is built once and reused by all non-ML services # # Build: docker build -t gitea.harkon.co.uk/harkon/base-runtime:v1.0.1 -f infra/docker/base-runtime.Dockerfile . # Push: docker push gitea.harkon.co.uk/harkon/base-runtime:v1.0.1 FROM python:3.12-slim as builder # Install build dependencies RUN apt-get update && apt-get install -y \ build-essential \ curl \ && rm -rf /var/lib/apt/lists/* # Create virtual environment RUN python -m venv /opt/venv ENV PATH="/opt/venv/bin:$PATH" # Copy requirements file COPY libs/requirements-base.txt /tmp/requirements-base.txt # Install base dependencies RUN pip install --no-cache-dir --upgrade pip && \ pip install --no-cache-dir -r /tmp/requirements-base.txt # Final stage - Runtime image FROM python:3.12-slim # Install runtime dependencies RUN apt-get update && apt-get install -y \ curl \ && rm -rf /var/lib/apt/lists/* \ && groupadd -r appuser \ && useradd -r -g appuser appuser # Copy virtual environment from builder COPY --from=builder /opt/venv /opt/venv # Set environment variables ENV PATH="/opt/venv/bin:$PATH" \ PYTHONUNBUFFERED=1 \ PYTHONDONTWRITEBYTECODE=1 # Health check HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \ CMD python -c "import fastapi; import uvicorn; print('Base runtime image healthy')" # Default user USER appuser # Label LABEL maintainer="AI Tax Agent Team" \ description="Base runtime image with FastAPI, database drivers, and core dependencies" \ version="1.0.1"