FROM php:8.2-fpm-alpine

RUN apk add --no-cache \
    libzip-dev \
    libpng-dev \
    libjpeg-turbo-dev \
    freetype-dev \
    icu-dev \
    libxml2-dev \
    oniguruma-dev \
    curl \
    git \
    unzip \
    bash \
    mysql-client \
    postgresql-client \
    postgresql-dev \
    nodejs \
    npm \
    && docker-php-ext-configure gd \
    --with-freetype \
    --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
    gd \
    zip \
    pdo \
    pdo_mysql \
    pdo_pgsql \
    opcache \
    exif \
    intl \
    bcmath \
    soap \
    mbstring \
    && rm -rf /var/cache/apk/* /tmp/*

RUN apk add --no-cache --virtual .redis-build-deps \
    autoconf \
    g++ \
    make \
    && pecl install redis \
    && docker-php-ext-enable redis \
    && apk del .redis-build-deps \
    && rm -rf /tmp/*

RUN set -eux; \
    HASH="$(curl -sS https://composer.github.io/installer.sig)"; \
    curl -sS https://getcomposer.org/installer -o composer-setup.php; \
    php -r "if (hash_file('sha384', 'composer-setup.php') !== '$HASH') { echo 'Composer installer corrupt'; unlink('composer-setup.php'); exit(1); }"; \
    php composer-setup.php --install-dir=/usr/local/bin --filename=composer; \
    php -r "unlink('composer-setup.php');"

WORKDIR /var/www/html

COPY php.ini /usr/local/etc/php/conf.d/custom.ini
COPY php-fpm.conf /usr/local/etc/php-fpm.d/zz-custom.conf

RUN chown -R www-data:www-data /var/www/html \
    && chmod -R 755 /var/www/html

USER www-data

HEALTHCHECK --interval=30s --timeout=10s --retries=3 --start-period=40s \
    CMD php-fpm -t || exit 1

EXPOSE 9000

CMD ["php-fpm"]
