Spaces:
Sleeping
Sleeping
FROM python:3.12.3-slim as builder | |
WORKDIR /app | |
# Install system dependencies required for building | |
RUN apt-get update && apt-get install -y \ | |
protobuf-compiler \ | |
gcc \ | |
g++ \ | |
cmake \ | |
pkg-config \ | |
build-essential \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Install poetry | |
RUN pip install poetry | |
# Copy dependency files | |
COPY pyproject.toml poetry.lock ./ | |
# Configure poetry and install dependencies | |
RUN poetry config virtualenvs.create false \ | |
&& poetry install --no-interaction --no-ansi --no-root | |
# Second stage | |
FROM python:3.12.3-slim | |
WORKDIR /app | |
# Copy installed dependencies from builder | |
COPY --from=builder /usr/local/lib/python3.12/site-packages/ /usr/local/lib/python3.12/site-packages/ | |
COPY --from=builder /usr/local/bin/ /usr/local/bin/ | |
# Install runtime system dependencies | |
RUN apt-get update && apt-get install -y \ | |
protobuf-compiler \ | |
&& rm -rf /var/lib/apt/lists/* | |
# Copy application code | |
COPY . . | |
# Create non-root user | |
RUN useradd -m appuser && \ | |
chown -R appuser:appuser /app | |
USER appuser | |
EXPOSE 7860 | |
# Health check | |
HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 \ | |
CMD curl -f http://localhost:7860/ || exit 1 | |
CMD ["poetry", "run", "python", "app.py"] |