Skip to main content
Glama

Claude Conversation Logger

Dockerfile7.52 kB
# ============================================================================= # Multi-stage Dockerfile optimizado para Claude Conversation Logger # Reduce el tamaño de imagen de ~2GB a ~800MB # ============================================================================= # ============================ # Stage 1: Build Environment # ============================ FROM node:18-alpine AS builder # Metadatos LABEL stage=builder LABEL description="Build stage for Node.js dependencies" # Variables de entorno para build ENV NODE_ENV=production ENV NPM_CONFIG_LOGLEVEL=warn ENV NPM_CONFIG_AUDIT=false # Crear directorio de trabajo WORKDIR /app # Copiar archivos de dependencias COPY package*.json ./ # Instalar dependencias de producción con optimizaciones RUN npm ci --only=production --no-audit --no-fund \ && npm cache clean --force # Extraer archivos estáticos necesarios RUN mkdir -p ./assets && \ cp ./node_modules/vue/dist/vue.global.js ./assets/ && \ cp ./node_modules/axios/dist/axios.min.js ./assets/ && \ echo "Static assets extracted successfully" # ============================ # Stage 2: Runtime Base # ============================ FROM ubuntu:22.04 AS runtime-base # Metadatos LABEL stage=runtime-base LABEL description="Optimized runtime environment" # Variables de entorno para runtime ENV DEBIAN_FRONTEND=noninteractive ENV TZ=UTC ENV NODE_ENV=production ENV NPM_CONFIG_LOGLEVEL=error # Instalar solo las dependencias críticas del sistema RUN apt-get update && apt-get install -y --no-install-recommends \ # Core utilities curl \ wget \ ca-certificates \ gnupg \ lsb-release \ # Process management supervisor \ # Web server nginx-light \ # Database redis-server \ # Cleanup && rm -rf /var/lib/apt/lists/* \ && apt-get autoremove -y \ && apt-get autoclean # ============================ # Stage 3: Node.js Installation # ============================ FROM runtime-base AS nodejs-runtime # Instalar Node.js 18 con optimización de tamaño RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ && apt-get install -y --no-install-recommends nodejs \ && rm -rf /var/lib/apt/lists/* \ && npm config set fund false \ && npm config set audit false # ============================ # Stage 4: MongoDB Installation # ============================ FROM nodejs-runtime AS mongodb-runtime # Instalar MongoDB 7.0 con configuración optimizada RUN wget -qO - https://www.mongodb.org/static/pgp/server-7.0.asc | apt-key add - \ && echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/7.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-7.0.list \ && apt-get update \ && apt-get install -y --no-install-recommends \ mongodb-org-server \ mongodb-org-shell \ mongodb-org-tools \ && rm -rf /var/lib/apt/lists/* \ && rm -rf /tmp/* \ && apt-get autoremove -y \ && apt-get autoclean # ============================ # Stage 5: Final Production Image # ============================ FROM mongodb-runtime AS production # Metadatos finales LABEL maintainer="Claude Code Team" LABEL version="2.1.3-optimized" LABEL description="Optimized Claude Conversation Logger with multi-service architecture" # Variables de entorno de producción ENV NODE_ENV=production ENV LOG_LEVEL=info ENV MONGODB_URI=mongodb://localhost:27017/claude_conversations ENV REDIS_URL=redis://localhost:6379 ENV GRPC_PORT=50051 ENV HTTP_PORT=3003 # Crear estructura de directorios optimizada RUN mkdir -p \ # App directories /app/src \ /app/logs \ /app/data/mongodb \ /app/data/redis \ # System directories /data/db \ /var/lib/redis \ /var/log/mongodb \ /var/log/redis \ /var/log/supervisor \ /etc/supervisor/conf.d \ # Nginx /var/cache/nginx \ /var/log/nginx # Crear usuario de aplicación con permisos mínimos RUN groupadd -r appuser && useradd -r -g appuser -u 1001 -s /bin/false appuser # Configurar permisos del sistema RUN chown -R mongodb:mongodb /data/db /app/data/mongodb /var/log/mongodb \ && chown -R redis:redis /var/lib/redis /app/data/redis /var/log/redis \ && chown -R www-data:www-data /var/log/nginx /var/cache/nginx \ && chown -R appuser:appuser /app # Establecer directorio de trabajo WORKDIR /app # Copiar dependencias de Node.js optimizadas desde el stage builder COPY --from=builder --chown=appuser:appuser /app/node_modules ./node_modules COPY --from=builder --chown=appuser:appuser /app/assets ./src/dashboard/assets # Copiar código fuente de la aplicación COPY --chown=appuser:appuser src/ ./src/ COPY --chown=appuser:appuser package*.json ./ # Copiar configuraciones del sistema COPY config/supervisord.conf /etc/supervisor/conf.d/supervisord.conf COPY config/mongod.conf /etc/mongod.conf COPY config/redis.conf /etc/redis/redis.conf # Configuración simple y funcional de Nginx COPY --chown=www-data:www-data config/nginx-fixed.conf /etc/nginx/sites-enabled/default # Script de inicio optimizado COPY scripts/start.sh /start.sh RUN chmod +x /start.sh # Crear archivo de configuración de la aplicación RUN echo '{\ "environment": "production",\ "logging": {\ "level": "info",\ "format": "json"\ },\ "database": {\ "mongodb": {\ "uri": "mongodb://localhost:27017/claude_conversations",\ "options": {\ "maxPoolSize": 10,\ "serverSelectionTimeoutMS": 5000,\ "socketTimeoutMS": 45000\ }\ },\ "redis": {\ "uri": "redis://localhost:6379",\ "options": {\ "maxRetriesPerRequest": 3,\ "retryDelayOnFailover": 100\ }\ }\ },\ "server": {\ "http": {\ "port": 3003,\ "host": "0.0.0.0"\ },\ "grpc": {\ "port": 50051,\ "host": "0.0.0.0"\ }\ }\ }' > /app/config.json && chown appuser:appuser /app/config.json # Optimizaciones de imagen final RUN apt-get autoremove -y \ && apt-get autoclean \ && rm -rf /var/lib/apt/lists/* \ && rm -rf /tmp/* \ && rm -rf /var/cache/apt/* \ && find /usr/share/doc -depth -type f ! -name copyright -delete \ && find /usr/share/man -depth -type f -delete \ && find /usr/share/locale -mindepth 1 -maxdepth 1 ! -name 'en*' -exec rm -rf {} + \ && rm -rf /usr/share/info/* \ && rm -rf /var/cache/debconf/* # Exponer puertos necesarios EXPOSE 3003 50051 # Health check optimizado con timeout reducido HEALTHCHECK --interval=30s --timeout=5s --start-period=60s --retries=3 \ CMD curl -f http://localhost:3003/health || exit 1 # Configurar límites de recursos para contenedor ENV NODE_OPTIONS="--max-old-space-size=512" # Comando de inicio ENTRYPOINT ["/start.sh"] # ============================================================================= # Optimizaciones aplicadas: # # 1. Multi-stage build: Separación de build y runtime (~60% reducción) # 2. Alpine base para builder: Imagen más pequeña para dependencias # 3. Ubuntu optimizado: Solo paquetes esenciales sin recomendados # 4. Limpieza agresiva: Eliminación de cachés, docs, locales innecesarios # 5. Usuario no-root: Seguridad mejorada # 6. Variables de entorno: Configuración optimizada para producción # 7. Health check eficiente: Timeout reducido y menos reintentos # 8. Node.js optimizado: Garbage collection y memoria limitada # # Tamaño estimado: ~800MB (vs ~2GB original) # =============================================================================

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LucianoRicardo737/claude-conversation-logger'

If you have feedback or need assistance with the MCP directory API, please join our Discord server