# Stage 1: Build application
FROM node:22-bookworm-slim AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

# Stage 2: Create runtime image
FROM nginxinc/nginx-unprivileged:1.25-alpine AS runtime

# Create writable directories
USER root
RUN mkdir -p /runtime-config && \
    chown nginx:nginx /runtime-config && \
    chown -R nginx:nginx /var/cache/nginx && \
    chown -R nginx:nginx /var/run
USER nginx

# Copy built assets
COPY --from=builder --chown=nginx:nginx /app/dist /usr/share/nginx/html

# Copy nginx config template
COPY --chown=nginx:nginx nginx.conf.template /etc/nginx/templates/

# Copy entrypoint script
COPY --chown=nginx:nginx docker/entrypoint.sh /entrypoint.sh

# Make entrypoint executable
USER root
RUN chmod +x /entrypoint.sh
USER nginx

EXPOSE 8080

ENTRYPOINT ["/entrypoint.sh"]