FROM composer:2 AS vendor

WORKDIR /app

ARG INSTALL_DEV=false

COPY composer.json composer.lock ./
RUN if [ "$INSTALL_DEV" = "true" ]; then \
        composer install --no-interaction --no-progress --no-scripts --prefer-dist; \
    else \
        composer install --no-dev --no-interaction --no-progress --no-scripts --prefer-dist; \
    fi

COPY . .
RUN if [ "$INSTALL_DEV" = "true" ]; then \
        composer dump-autoload --optimize --no-interaction; \
    else \
        composer dump-autoload --no-dev --optimize --no-interaction; \
    fi

FROM php:8.3-fpm-alpine

RUN apk add --no-cache libpq \
    && apk add --no-cache --virtual .build-deps libpq-dev \
    && docker-php-ext-install -j"$(nproc)" bcmath pdo_pgsql \
    && apk del .build-deps

WORKDIR /var/www/html

COPY --from=vendor --chown=www-data:www-data /app .
COPY --from=vendor /usr/bin/composer /usr/local/bin/composer
COPY --chown=www-data:www-data docker/php/entrypoint.sh /usr/local/bin/laravel-entrypoint

RUN chmod +x /usr/local/bin/laravel-entrypoint \
    && mkdir -p storage/framework/cache storage/framework/sessions storage/framework/views storage/logs bootstrap/cache \
    && chown -R www-data:www-data storage bootstrap/cache

USER www-data

EXPOSE 9000

ENTRYPOINT ["laravel-entrypoint"]
CMD ["php-fpm"]
