# PHP 8.4 FPM baseado em Alpine
FROM php:8.4-fpm-alpine

# Maintainer
LABEL maintainer="Alexander Graf <alex@basecamp.tirol>"

# Build arguments
ARG VCS_REF=master
ARG BUILD_DATE=""

# http://label-schema.org/rc1/
LABEL org.label-schema.schema-version="1.0"
LABEL org.label-schema.name="PHP8-FPM"
LABEL org.label-schema.build-date="${BUILD_DATE}"
LABEL org.label-schema.description="All-purpose PHP-FPM 8.4 Docker image that comes with the most popular extensions"
LABEL org.label-schema.vcs-url="https://github.com/otherguy/docker-php8-fpm"
LABEL org.label-schema.vcs-ref="${VCS_REF}"

# Dependências do sistema (dev headers para compilar extensões)
RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS \
 && apk add --no-cache \
      curl shadow sqlite curl-dev \
      freetype-dev libpng-dev libjpeg-turbo-dev \
      postgresql-dev imagemagick-dev icu-dev openssl-dev oniguruma-dev libzip-dev \
      libxml2-dev

# GD + extensões que realmente precisam compilar
RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
 && docker-php-ext-install -j"$(nproc)" \
      gd exif intl mbstring xml mysqli pdo_mysql pdo_pgsql zip bcmath opcache pcntl \
 && pecl install redis \
 && docker-php-ext-enable redis \
 && apk del --no-cache .build-deps $PHPIZE_DEPS \
 && rm -rf /var/cache/apk/*

# Composer (global)
RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
ENV COMPOSER_ALLOW_SUPERUSER=1

# PHP Config
COPY conf/*.ini /usr/local/etc/php/conf.d/

# Desabilitar access log do php-fpm e habilitar error log
RUN sed -e '/access.log/s/^/;/' -i /usr/local/etc/php-fpm.d/docker.conf \
 && echo -e "[PHP]\nlog_errors = yes" > /usr/local/etc/php/conf.d/errorlog.ini

# Ajuste do UID do www-data para 1000
RUN usermod -u 1000 www-data

# ⚠️ Muda o HOME do www-data para não ser sobreposto pelo bind mount /var/www
RUN usermod -d /home/www-data www-data \
 && mkdir -p /home/www-data \
 && chown -R www-data:www-data /home/www-data

# Coloca os bins globais do Composer no PATH (novo HOME do www-data + root)
ENV PATH="${PATH}:/home/www-data/.composer/vendor/bin:/home/www-data/.config/composer/vendor/bin:/root/.composer/vendor/bin:/root/.config/composer/vendor/bin"

# Instala o Laravel Installer global no novo HOME do www-data
USER www-data
RUN composer global require laravel/installer
USER root

# 👉 Node.js + npm dentro do container PHP
# (Alpine: pacote 'nodejs' + 'npm'. Se futuramente você precisar de node-gyp,
# pode instalar também: python3 make g++  — mas só se necessário.)
RUN apk add --no-cache nodejs npm

# Diretório de trabalho (o compose monta ./cliente aqui)
WORKDIR /var/www

# (Opcional) Volume de configs PHP
VOLUME /usr/local/etc/php/conf.d/

# UTF-8 default
ENV LANG=en_US.utf8