a7d623733b
chore(deps): update docker.io/library/python:3.12-slim-trixie docker digest to f3fa41d
45 lines
1.4 KiB
Docker
45 lines
1.4 KiB
Docker
# Dockerfile for Smithery stateless deployment
|
|
# ADR-016: Stateless mode for multi-user public Nextcloud instances
|
|
#
|
|
# This image excludes:
|
|
# - Vector database dependencies (qdrant-client)
|
|
# - Background sync workers
|
|
# - Admin UI routes (/app)
|
|
# - Semantic search tools
|
|
#
|
|
# Features included:
|
|
# - Core Nextcloud tools (notes, calendar, contacts, files, deck, tables, cookbook)
|
|
# - Per-session app password authentication
|
|
# - Multi-user support via Smithery session config
|
|
|
|
FROM docker.io/library/python:3.12-slim-trixie@sha256:f3fa41d74a768c2fce8016b98c191ae8c1bacd8f1152870a3f9f87d350920b7c
|
|
|
|
WORKDIR /app
|
|
|
|
# Install uv for fast dependency management
|
|
COPY --from=ghcr.io/astral-sh/uv:0.10.7@sha256:edd1fd89f3e5b005814cc8f777610445d7b7e3ed05361f9ddfae67bebfe8456a /uv /uvx /bin/
|
|
|
|
# Install dependencies
|
|
# 1. git (required for caldav dependency from git)
|
|
# 2. sqlite for development with token db
|
|
RUN apt update && apt install --no-install-recommends --no-install-suggests -y \
|
|
git
|
|
|
|
# Copy project files
|
|
COPY . .
|
|
|
|
RUN uv sync --locked --no-dev --no-editable --no-cache
|
|
|
|
# Set Smithery mode environment variables
|
|
ENV SMITHERY_DEPLOYMENT=true
|
|
ENV VECTOR_SYNC_ENABLED=false
|
|
|
|
# Smithery sets PORT=8081 by default
|
|
EXPOSE 8081
|
|
|
|
# Health check endpoint
|
|
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
|
CMD uv run python -c "import httpx; httpx.get('http://localhost:${PORT:-8081}/health/live').raise_for_status()"
|
|
|
|
CMD ["/app/.venv/bin/smithery-main"]
|