FROM php:8.4-cli-bookworm

LABEL maintainer="Regiticket"

ARG WWWGROUP=1000
ARG NODE_VERSION=24

WORKDIR /var/www/html

ENV DEBIAN_FRONTEND=noninteractive \
    TZ=UTC \
    LANG=C.UTF-8 \
    SUPERVISOR_PHP_COMMAND="/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80" \
    SUPERVISOR_PHP_USER=sail \
    PLAYWRIGHT_BROWSERS_PATH=0

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

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        ca-certificates curl gnupg git unzip zip supervisor sqlite3 libcap2-bin \
        zlib1g-dev libpng-dev libjpeg62-turbo-dev libfreetype6-dev libzip-dev libicu-dev \
        libldap2-dev libxml2-dev \
        gosu nano ffmpeg dnsutils default-mysql-client postgresql-client \
        pkg-config build-essential autoconf \
    && docker-php-ext-configure gd --with-freetype --with-jpeg \
    && docker-php-ext-install -j$(nproc) \
        gd pdo_mysql zip intl bcmath soap ldap exif pcntl \
    && pecl install redis \
    && docker-php-ext-enable redis \
    && ln -sf /usr/local/bin/php /usr/bin/php \
    && setcap "cap_net_bind_service=+ep" /usr/local/bin/php \
    && apt-get purge -y pkg-config build-essential autoconf \
        zlib1g-dev libpng-dev libjpeg62-turbo-dev libfreetype6-dev libzip-dev libicu-dev libldap2-dev libxml2-dev \
    && apt-get autoremove -y \
    && apt-get install -y --no-install-recommends libzip4 \
    && rm -rf /var/lib/apt/lists/*

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/bin --filename=composer

RUN mkdir -p /etc/apt/keyrings \
    && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \
    && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_${NODE_VERSION}.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \
    && apt-get update \
    && apt-get install -y --no-install-recommends nodejs \
    && npm install -g npm pnpm bun \
    && corepack enable \
    && corepack prepare yarn@stable --activate \
    && rm -rf /var/lib/apt/lists/*

RUN groupadd --force -g "$WWWGROUP" sail \
    && useradd -ms /bin/bash --no-user-group -g "$WWWGROUP" -u 1337 sail \
    && mkdir -p /.composer \
    && chmod -R ugo+rw /.composer \
    && git config --global --add safe.directory /var/www/html

COPY start-container /usr/local/bin/start-container
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
COPY php.ini /usr/local/etc/php/conf.d/99-sail.ini

RUN chmod +x /usr/local/bin/start-container

EXPOSE 80/tcp

ENTRYPOINT ["start-container"]
