- Complete Rentcast API integration with all endpoints - Intelligent caching system with hit/miss tracking - Rate limiting with exponential backoff - User confirmation system with MCP elicitation support - Docker Compose setup with dev/prod modes - PostgreSQL database for persistence - Comprehensive test suite foundation - Full project structure and documentation
59 lines
1.1 KiB
Docker
59 lines
1.1 KiB
Docker
# Multi-stage Docker build for mcrentcast frontend
|
|
FROM node:20-alpine AS base
|
|
|
|
WORKDIR /app
|
|
|
|
# Install dependencies
|
|
RUN npm install -g pnpm
|
|
|
|
# Development stage
|
|
FROM base AS development
|
|
|
|
# Copy package files
|
|
COPY package.json pnpm-lock.yaml ./
|
|
|
|
# Install dependencies
|
|
RUN pnpm install
|
|
|
|
# Copy source code
|
|
COPY . .
|
|
|
|
# Expose port
|
|
EXPOSE 80
|
|
|
|
# Development command with hot reload
|
|
CMD ["pnpm", "dev", "--host", "0.0.0.0", "--port", "80"]
|
|
|
|
# Build stage
|
|
FROM base AS build
|
|
|
|
# Copy package files
|
|
COPY package.json pnpm-lock.yaml ./
|
|
|
|
# Install dependencies
|
|
RUN pnpm install --frozen-lockfile
|
|
|
|
# Copy source code
|
|
COPY . .
|
|
|
|
# Build for production
|
|
RUN pnpm build
|
|
|
|
# Production stage
|
|
FROM caddy:2.8-alpine AS production
|
|
|
|
# Copy Caddyfile
|
|
COPY --from=build /app/Caddyfile /etc/caddy/Caddyfile
|
|
|
|
# Copy built assets
|
|
COPY --from=build /app/dist /var/www/html
|
|
|
|
# Health check
|
|
HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
|
|
CMD wget --no-verbose --tries=1 --spider http://localhost/health || exit 1
|
|
|
|
# Expose port
|
|
EXPOSE 80
|
|
|
|
# Start Caddy
|
|
CMD ["caddy", "run", "--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"] |