Monorepo for wisp.place. A static site hosting service built on top of the AT Protocol. wisp.place
1# Use official Node.js Alpine image with pnpm 2# Build from monorepo root: docker build -f apps/hosting-service/Dockerfile . 3FROM node:alpine AS base 4 5# Install pnpm globally (supports workspace: protocol) 6RUN npm install -g pnpm 7 8# Set working directory 9WORKDIR /app 10 11# Copy workspace configuration 12COPY package.json tsconfig.json ./ 13 14# Copy all workspace packages 15COPY packages ./packages 16 17# Copy hosting-service and main-app package.json (for workspace resolution) 18COPY apps/hosting-service ./apps/hosting-service 19COPY apps/main-app/package.json ./apps/main-app/package.json 20 21# Install all dependencies (including workspaces) 22RUN pnpm install --frozen-lockfile || pnpm install 23 24# Set working directory to hosting-service 25WORKDIR /app/apps/hosting-service 26 27# Create cache directory 28RUN mkdir -p ./cache/sites 29 30# Set environment variables (can be overridden at runtime) 31ENV PORT=3001 32ENV NODE_ENV=production 33 34# Expose the application port 35EXPOSE 3001 36 37# Health check 38HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \ 39 CMD node -e "fetch('http://localhost:3001/health').then(r => r.ok ? process.exit(0) : process.exit(1)).catch(() => process.exit(1))" 40 41# Start the application (can override with 'pnpm run backfill' in compose) 42CMD ["pnpm", "run", "start"]