Files
SuperCharged-Claude-Code-Up…/dexto/Dockerfile
admin b52318eeae feat: Add intelligent auto-router and enhanced integrations
- Add intelligent-router.sh hook for automatic agent routing
- Add AUTO-TRIGGER-SUMMARY.md documentation
- Add FINAL-INTEGRATION-SUMMARY.md documentation
- Complete Prometheus integration (6 commands + 4 tools)
- Complete Dexto integration (12 commands + 5 tools)
- Enhanced Ralph with access to all agents
- Fix /clawd command (removed disable-model-invocation)
- Update hooks.json to v5 with intelligent routing
- 291 total skills now available
- All 21 commands with automatic routing

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-28 00:27:56 +04:00

87 lines
3.4 KiB
Docker

################################################################################
# Build stage - includes dev dependencies
ARG NODE_VERSION=20.18.1
################################################################################
# Build stage - pnpm workspace build and prune
FROM node:${NODE_VERSION}-alpine AS builder
# Install build dependencies for native modules
RUN apk add --no-cache \
python3 \
make \
g++ \
&& rm -rf /var/cache/apk/*
WORKDIR /app
# Install a pinned pnpm globally (avoid Corepack signature issues in containers)
ARG PNPM_VERSION=10.12.4
RUN npm i -g pnpm@${PNPM_VERSION}
# Copy workspace manifests for better layer caching
COPY package.json pnpm-lock.yaml pnpm-workspace.yaml ./
COPY packages/cli/package.json packages/cli/package.json
COPY packages/core/package.json packages/core/package.json
COPY packages/webui/package.json packages/webui/package.json
# Install workspace dependencies (with lockfile)
RUN pnpm install --frozen-lockfile
# Copy sources and build all packages (embeds WebUI into CLI dist)
COPY . .
RUN pnpm -w build
# Prune to production dependencies
# Prune to production dependencies at the workspace root
# (keeps per-package node_modules; smaller image without dev deps)
RUN pnpm prune --prod
################################################################################
# Production stage - minimal Alpine with Chromium
FROM node:${NODE_VERSION}-alpine AS production
# Install Chromium runtime
RUN apk add --no-cache \
chromium \
&& rm -rf /var/cache/apk/* /tmp/*
WORKDIR /app
# Create non-root user and data dir
RUN addgroup -g 1001 -S dexto && adduser -S dexto -u 1001 \
&& mkdir -p /app/.dexto/database && chown -R dexto:dexto /app/.dexto
# Copy only what we need for runtime
COPY --from=builder --chown=dexto:dexto /app/node_modules ./node_modules
COPY --from=builder --chown=dexto:dexto /app/packages/cli/node_modules ./packages/cli/node_modules
COPY --from=builder --chown=dexto:dexto /app/packages/cli/dist ./packages/cli/dist
COPY --from=builder --chown=dexto:dexto /app/packages/cli/package.json ./packages/cli/package.json
# Copy core workspace package since pnpm links it via node_modules
COPY --from=builder --chown=dexto:dexto /app/packages/core/package.json ./packages/core/package.json
COPY --from=builder --chown=dexto:dexto /app/packages/core/dist ./packages/core/dist
COPY --from=builder --chown=dexto:dexto /app/packages/core/node_modules ./packages/core/node_modules
COPY --from=builder --chown=dexto:dexto /app/agents ./agents
COPY --from=builder --chown=dexto:dexto /app/package.json ./
# Environment
ENV NODE_ENV=production \
PORT=3001 \
API_PORT=3001 \
CONFIG_FILE=/app/agents/coding-agent/coding-agent.yml \
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser
# Run as non-root
USER dexto
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
CMD node -e "const http=require('http');const port=process.env.API_PORT||process.env.PORT||3001;const req=http.request({host:'localhost',port,path:'/health'},res=>process.exit(res.statusCode===200?0:1));req.on('error',()=>process.exit(1));req.end();"
# Fixed port for metadata (runtime can override via -e API_PORT)
EXPOSE 3001
# Server mode: REST APIs + SSE streaming on single port (no Web UI)
CMD ["sh", "-c", "node packages/cli/dist/index.js --mode server --agent $CONFIG_FILE"]