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:
64
Dockerfile
64
Dockerfile
@@ -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"]
|
||||
|
||||
Reference in New Issue
Block a user