feat: unify docs portal and MCP servers into one config-driven service

- add config.yml as single source of truth for collected repos/categories
- add collect.py CLI to pull lib/api/wiki site builds and mcp bundles from
  source repos and regenerate nginx.conf + _index/index.html
- port mcp runtime (main.py/core.py/config.py): nginx + health + FastMCP
  servers started from config.yml
- docker: python:3.13-slim + nginx, expose 8000-8006 + 9000 (html portal)
- drone: publish html (6007:9000) and MCP ports 8000-8006
- move mongo-ops docs to wiki/, add auth-server (api) and hexa (lib)
- refresh lib site builds (lib/ prefix) and collect mcp bundles
This commit is contained in:
2026-09-11 15:14:51 +05:30
parent 0e49f02c4c
commit 0c25cbb19f
609 changed files with 175303 additions and 4274 deletions

View File

@@ -1,36 +1,44 @@
# Stage 1: Base Nginx static server
FROM nginx:1.27-alpine
# ---------------------------------------------------------------------------
# aetos-docs — serves both the HTML documentation portal (nginx) and the
# per-library MCP servers (FastMCP streamable-http).
# ---------------------------------------------------------------------------
FROM python:3.13-slim
# Metadata
LABEL maintainer="Aetoskia <dev@aetoskia.com>"
LABEL description="Static documentation host for Aetoskia projects"
LABEL description="Unified documentation portal and MCP server for Aetoskia projects"
# Copy custom Nginx configuration
# --- system deps -----------------------------------------------------------
RUN apt-get update && \
apt-get install -y --no-install-recommends nginx && \
rm -rf /var/lib/apt/lists/*
# --- python deps -----------------------------------------------------------
WORKDIR /app
ARG PIP_USERNAME
ARG PIP_PASSWORD
ARG PIP_REPO_URL
COPY requirements.txt .
RUN pip install --no-cache-dir uv && \
uv pip install --system -r requirements.txt
# --- application files -----------------------------------------------------
COPY main.py core.py config.py collect.py config.yml ./
COPY nginx.conf /etc/nginx/conf.d/default.conf
RUN rm -f /etc/nginx/sites-enabled/default
# Copy Index
COPY ./_index /usr/share/nginx/html/
# --- collected documentation tree -----------------------------------------
COPY _index /usr/share/nginx/html/
COPY libs /usr/share/nginx/html/libs
COPY apis /usr/share/nginx/html/apis
COPY wiki /usr/share/nginx/html/wiki
COPY tutorials /usr/share/nginx/html/tutorials
# Copy Libs
COPY ./libs/dagpipe/site /usr/share/nginx/html/libs/dagpipe/
COPY ./libs/doc-forge/site /usr/share/nginx/html/libs/doc-forge/
COPY ./libs/mail-intake/site /usr/share/nginx/html/libs/mail-intake/
COPY ./libs/mongo-ops/site /usr/share/nginx/html/libs/mongo-ops/
COPY ./libs/omniread/site /usr/share/nginx/html/libs/omniread/
COPY ./libs/openapi-first/site /usr/share/nginx/html/libs/openapi-first/
COPY ./libs/py-jwt/site /usr/share/nginx/html/libs/py-jwt/
# --- MCP bundles -----------------------------------------------------------
COPY mcp /app/mcp
# Copy Apis
COPY ./apis/blog/site /usr/share/nginx/html/apis/blog/
EXPOSE 8000 8001 8002 8003 8004 8005 8006 9000
# Copy Tutorials
COPY ./tutorials/media-manager/site /usr/share/nginx/html/tutorials/media-manager/
# Expose HTTP port
EXPOSE 80
# Healthcheck
HEALTHCHECK --interval=30s --timeout=5s CMD wget -qO- http://localhost/ || exit 1
# Start Nginx
CMD ["nginx", "-g", "daemon off;"]
CMD ["python", "main.py"]