FROM node:20-alpine AS builder
WORKDIR /app
COPY spa/package*.json ./
RUN npm install
COPY spa/ .
RUN npm run build

FROM php:8.2-fpm-alpine

RUN apk add --no-cache nginx wget unzip zip libzip-dev \
    && docker-php-ext-install zip

# Install SnappyMail
WORKDIR /var/www/html/mail
RUN wget -O snappymail.zip https://snappymail.eu/repository/latest.zip && \
    unzip snappymail.zip && \
    rm snappymail.zip && \
    find . -type d -exec chmod 755 {} \; && \
    find . -type f -exec chmod 644 {} \; && \
    chown -R www-data:www-data /var/www/html/mail

# Copy built SPA
COPY --from=builder /app/dist /var/www/html/spa
RUN chown -R www-data:www-data /var/www/html/spa

# Copy configurations
COPY nginx.conf /etc/nginx/nginx.conf
COPY entrypoint.sh /entrypoint.sh
RUN chmod +x /entrypoint.sh

# Create Nginx run directory
RUN mkdir -p /run/nginx

EXPOSE 80

ENTRYPOINT ["/entrypoint.sh"]
