
FROM composer:latest AS composer-base
FROM dunglas/frankenphp:1-php8.4
LABEL maintainer="PyRowMan"
ENV SERVER_NAME=:${APP_PORT:-80}
ARG MYSQL_CLIENT="mariadb-client"

WORKDIR /app


COPY --from=node:22 /usr/local/ /usr/local/
COPY --from=composer-base --link /usr/bin/composer /usr/bin/composer

RUN apt update \
 && apt install -y --no-install-recommends \
     unrar-free lame libcap2-bin python3 gettext-base \
     curl zip unzip git nano bash-completion sudo wget tmux time fonts-powerline \
     gnupg libpng-dev dnsutils jq htop iputils-ping net-tools ffmpeg \
     jpegoptim webp optipng pngquant libavif-bin watch iproute2 nmon \
     libonig-dev libxml2-dev libicu-dev libjpeg-dev libfreetype6-dev libxslt-dev $MYSQL_CLIENT libcurl4-openssl-dev \
 && wget https://mediaarea.net/repo/deb/repo-mediaarea_1.0-24_all.deb \
 && dpkg -i repo-mediaarea_1.0-24_all.deb \
 && apt update \
 && apt install -y libmediainfo0v5 mediainfo libzen0v5
RUN install-php-extensions imagick/imagick@master
RUN docker-php-ext-install \
     bcmath \
     exif \
     gd \
     intl \
     pdo_mysql \
     sockets \
     pcntl \
 && pecl install redis \
 && docker-php-ext-enable redis \
 && apt clean \
 && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
COPY ./docker/8.5/php.ini "$PHP_INI_DIR/conf.d/custom-conf.ini"

COPY --chmod=755 ./docker-entrypoint.sh /usr/local/bin/docker-entrypoint

COPY . /app

RUN rm -Rf tests/

RUN composer install

RUN chmod -R 755 /app/vendor/
RUN chmod -R 777 /app/storage/
RUN chmod -R 777 /app/resources/
RUN chmod -R 777 /app/public/

EXPOSE ${APP_PORT:-80}

CMD ["--config", "/etc/caddy/Caddyfile", "--adapter", "caddyfile"]
ENTRYPOINT ["docker-entrypoint"]


