# 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 serve

# Copy built files
COPY --from=builder /app/dist ./dist

EXPOSE 3000
CMD ["serve", "-s", "dist", "-l", "3000"]
