Files
python-sdk/pkg/hanzo-memory/Dockerfile
T
2025-07-27 03:02:44 -05:00

57 lines
1.3 KiB
Docker

# Build stage
FROM python:3.11-slim as builder
# Install build dependencies
RUN apt-get update && apt-get install -y \
build-essential \
curl \
&& rm -rf /var/lib/apt/lists/*
# Install uv
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.cargo/bin:$PATH"
# Set working directory
WORKDIR /app
# Copy project files
COPY pyproject.toml .
COPY src/ src/
# Build the package
RUN uv pip install --system -e .
# Runtime stage
FROM python:3.11-slim
# Install runtime dependencies
RUN apt-get update && apt-get install -y \
curl \
&& rm -rf /var/lib/apt/lists/*
# Create non-root user
RUN useradd -m -u 1000 hanzo
# Set working directory
WORKDIR /app
# Copy from builder
COPY --from=builder /usr/local/lib/python3.11/site-packages /usr/local/lib/python3.11/site-packages
COPY --from=builder /usr/local/bin /usr/local/bin
COPY --from=builder /app/src /app/src
# Create data directory
RUN mkdir -p /app/data && chown -R hanzo:hanzo /app
# Switch to non-root user
USER hanzo
# Expose port
EXPOSE 4000
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD curl -f http://localhost:4000/health || exit 1
# Run the server
CMD ["python", "-m", "uvicorn", "hanzo_memory.server:app", "--host", "0.0.0.0", "--port", "4000"]