# syntax=docker/dockerfile:1 # ============================================================================= # Node.js 22 - Frontend Classeo (SvelteKit) # ============================================================================= FROM node:22-alpine AS base # Install pnpm RUN corepack enable && corepack prepare pnpm@10.28.2 --activate # Set working directory WORKDIR /app # ============================================================================= # Development stage # ============================================================================= FROM base AS dev # Create entrypoint script for dev (installs deps if needed) RUN echo '#!/bin/sh' > /usr/local/bin/docker-entrypoint.sh && \ echo 'set -e' >> /usr/local/bin/docker-entrypoint.sh && \ echo 'if [ ! -d /app/node_modules ] || [ ! -f /app/node_modules/.pnpm/lock.yaml ]; then' >> /usr/local/bin/docker-entrypoint.sh && \ echo ' echo "Installing pnpm dependencies..."' >> /usr/local/bin/docker-entrypoint.sh && \ echo ' pnpm install' >> /usr/local/bin/docker-entrypoint.sh && \ echo 'fi' >> /usr/local/bin/docker-entrypoint.sh && \ echo 'exec "$@"' >> /usr/local/bin/docker-entrypoint.sh && \ chmod +x /usr/local/bin/docker-entrypoint.sh EXPOSE 5173 ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"] CMD ["pnpm", "run", "dev", "--host", "0.0.0.0"] # ============================================================================= # Build stage # ============================================================================= FROM base AS builder COPY package.json pnpm-lock.yaml* ./ RUN if [ -f pnpm-lock.yaml ]; then pnpm install --frozen-lockfile; else pnpm install; fi COPY . . RUN pnpm run build # ============================================================================= # Production stage # ============================================================================= FROM base AS prod ENV NODE_ENV=production COPY package.json pnpm-lock.yaml* ./ RUN if [ -f pnpm-lock.yaml ]; then pnpm install --frozen-lockfile --prod; else pnpm install --prod; fi COPY --from=builder /app/build build/ COPY --from=builder /app/package.json . EXPOSE 3000 CMD ["node", "build"]