########################
# STAGE 1: base
########################
FROM php:8.5-fpm-alpine AS base

ENV TZ=America/Montevideo
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone

RUN apk add --no-cache \
    tzdata \
    bash \
    curl \
    unzip \
    zip \
    icu-dev \
    mariadb-client \
    mariadb-connector-c-dev \
    oniguruma-dev \
    libzip-dev \
    $PHPIZE_DEPS \
 && docker-php-ext-install \
    pdo \
    pdo_mysql \
    intl \
    pcntl \
 && apk del $PHPIZE_DEPS

# Usuario laravel (uid/gid 1000)
RUN addgroup -g 1000 laravel \
    && adduser -u 1000 -G laravel -s /bin/sh -D laravel \
    && mkdir -p /var/www/html \
    && chown -R laravel:laravel /var/www



########################
# STAGE 2: development
########################
FROM base AS development

WORKDIR /var/www/html

# root SOLO para instalar cosas del sistema
USER root

# Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

RUN apk add --no-cache nodejs npm

# Directorios para volúmenes efímeros
RUN mkdir -p /var/www/html/vendor /var/www/html/node_modules \
    && chown -R laravel:laravel /var/www/html


# usuario normal para trabajar
USER laravel
WORKDIR /var/www/html

########################
# STAGE 3: build
########################
FROM development AS build

WORKDIR /var/www/html

COPY package.json package-lock.json ./
RUN npm ci

COPY --chown=laravel:laravel . .

# FIX 1: preparar storage y cache ANTES de artisan
USER root
RUN rm -r bootstrap/cache
RUN mkdir -p storage/logs bootstrap/cache \
    && chown -R laravel:laravel storage bootstrap/cache
USER laravel


# ahora sí, composer puede ejecutar artisan sin romper
RUN composer install --no-dev --optimize-autoloader --no-scripts \
    && npm run build \
    && rm -f public/hot \
    && rm -rf node_modules .env

########################
# STAGE 4: production
########################
FROM php:8.5-apache AS production

ENV TZ=America/Montevideo
WORKDIR /var/www/html

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone

RUN apt-get update && apt-get upgrade -y \
    && apt-get install -y \
        default-mysql-client \
        libmariadb-dev \
        libicu-dev \
    && docker-php-ext-install pdo pdo_mysql intl pcntl \
    && rm -rf /var/lib/apt/lists/*

RUN a2enmod rewrite
ENV APACHE_DOCUMENT_ROOT=/var/www/html/public

RUN sed -ri 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' \
    /etc/apache2/sites-available/*.conf \
    /etc/apache2/apache2.conf

COPY --from=build --chown=www-data:www-data /var/www/html /var/www/html


