FROM php:8.4-fpm-alpine AS builder

RUN echo "http://mirror.arvancloud.ir/alpine/v3.23/main" > /etc/apk/repositories && \
    echo "http://mirror.arvancloud.ir/alpine/v3.23/community" >> /etc/apk/repositories && \
    apk add --no-cache nodejs npm postgresql-dev git unzip

COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

WORKDIR /var/www/html

COPY composer.json composer.lock ./
RUN composer install --no-dev --no-scripts --no-autoloader --prefer-dist

COPY package*.json ./
RUN npm ci

COPY . .
RUN npm run build
RUN composer dump-autoload --optimize --classmap-authoritative


FROM php:8.4-fpm-alpine

RUN echo "http://mirror.arvancloud.ir/alpine/v3.23/main" > /etc/apk/repositories && \
    echo "http://mirror.arvancloud.ir/alpine/v3.23/community" >> /etc/apk/repositories

RUN apk add --no-cache nginx supervisor postgresql-dev $PHPIZE_DEPS

RUN docker-php-ext-install pdo pdo_pgsql pcntl bcmath \
    && pecl channel-update pecl.php.net \
    && pecl install redis \
    && docker-php-ext-enable redis \
    && apk del $PHPIZE_DEPS

WORKDIR /var/www/html

COPY --from=builder /var/www/html .

RUN chown -R www-data:www-data storage bootstrap/cache \
    && chmod -R 775 storage bootstrap/cache

COPY docker/nginx.conf /etc/nginx/nginx.conf
COPY docker/supervisord.conf /etc/supervisord.conf

EXPOSE 80

CMD ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf"]
