# Stage 1: Build and install dependencies FROM node:22-alpine AS builder WORKDIR /app # Install necessary dependencies, including pnpm RUN set -eux \ && apk add --no-cache nodejs curl \ && npm install -g pnpm # Copy package files first (for better caching) COPY package.json pnpm-lock.yaml ./ # Install dependencies RUN pnpm install --frozen-lockfile # Now copy the rest of your source code COPY . . # Set build arguments ARG CONTAINER_WEB_VERSION ARG ENVIRONMENT ARG BUILD_DATE ARG GIT_COMMIT # Create .env file with build-time environment variables RUN echo "PUBLIC_VERSION=${CONTAINER_WEB_VERSION}" > /app/.env && \ echo "PUBLIC_ENVIRONMENT=${ENVIRONMENT}" >> /app/.env && \ echo "PUBLIC_BUILD_DATE=${BUILD_DATE}" >> /app/.env && \ echo "PUBLIC_GIT_COMMIT=${GIT_COMMIT}" >> /app/.env # Build the project RUN pnpm run build # Stage 2: Serve static files FROM node:22-alpine WORKDIR /app # Install serve RUN npm install -g http-server # Copy built files COPY --from=builder /app/dist ./dist # Expose port 3000 EXPOSE 3000 # Deployment command CMD ["http-server", "dist", "-a", "0.0.0.0", "-p", "3000"]