fleet-memory/docker/api.Dockerfile
2025-11-22 14:05:07 -07:00

51 lines
1.3 KiB
Docker

FROM python:3.11-slim AS builder
# Install build dependencies
RUN apt-get update && apt-get install -y \
build-essential \
&& rm -rf /var/lib/apt/lists/*
# Set working directory
WORKDIR /app
# Copy only dependency files first for better caching
COPY memora/pyproject.toml memora/README.md /app/memora/
COPY memora/memora /app/memora/memora
COPY memora/alembic /app/memora/alembic
# Install uv for faster dependency installation
RUN pip install --no-cache-dir uv
# Install Python dependencies to a virtual environment
WORKDIR /app/memora
RUN uv venv /opt/venv && \
. /opt/venv/bin/activate && \
uv pip install --no-cache -e .
# Production stage
FROM python:3.11-slim
# Install only runtime dependencies
RUN apt-get update && apt-get install -y \
curl \
libgomp1 \
&& rm -rf /var/lib/apt/lists/*
# Copy virtual environment from builder
COPY --from=builder /opt/venv /opt/venv
COPY --from=builder /app/memora /app/memora
# Set working directory
WORKDIR /app/memora
# Expose API port
EXPOSE 8080
# Set environment variables
ENV PYTHONUNBUFFERED=1
ENV DATABASE_URL=postgresql://memora:memora_dev@postgres:5432/memora
ENV PATH="/opt/venv/bin:$PATH"
ENV PYTHONPATH=/app/memora
# Run the API server
CMD ["python", "-m", "memora.web.server", "--host", "0.0.0.0", "--port", "8080"]