# ───────────────────────────────────────────────────────────── # Production image — PHP 8.4 FPM · Debian Bookworm # Sistem Pemantauan Kemampanan Pusat Data MBIP # # Extensions sedia ada dalam php:8.4-fpm-bookworm — JANGAN pasang # semula (mencetuskan recompile + header hilang): # ctype · curl · dom · fileinfo · json · openssl · pcre # posix · readline · session · simplexml · sodium # tokenizer · xml · xmlreader · xmlwriter · zlib # ───────────────────────────────────────────────────────────── FROM php:8.4-fpm-bookworm LABEL maintainer="MBIP" LABEL description="Sistem Pemantauan Kemampanan Pusat Data MBIP — PHP 8.4 FPM" ENV TZ=Asia/Kuala_Lumpur # ── System libs + timezone ─────────────────────────────────── RUN apt-get update && apt-get install -y --no-install-recommends \ tzdata \ libpng-dev \ libjpeg62-turbo-dev \ libfreetype6-dev \ libwebp-dev \ libzip-dev \ libicu-dev \ libonig-dev \ default-mysql-client \ supervisor \ unzip \ curl \ && ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime \ && echo ${TZ} > /etc/timezone \ && rm -rf /var/lib/apt/lists/* # ── Configure GD ───────────────────────────────────────────── RUN docker-php-ext-configure gd \ --with-freetype \ --with-jpeg \ --with-webp # ── Install extensions ──────────────────────────────────────── RUN docker-php-ext-install -j$(nproc) \ bcmath \ exif \ gd \ intl \ mbstring \ mysqli \ opcache \ pcntl \ pdo_mysql \ zip # ── Composer ────────────────────────────────────────────────── COPY --from=composer:2 /usr/bin/composer /usr/bin/composer # ── PHP + FPM config ───────────────────────────────────────── COPY docker/php/php.ini $PHP_INI_DIR/conf.d/99-mbip.ini COPY docker/php/www.conf /usr/local/etc/php-fpm.d/www.conf # ── Supervisor ──────────────────────────────────────────────── COPY docker/supervisor/supervisord.conf /etc/supervisor/conf.d/supervisord.conf # ── Cipta direktori yang diperlukan ────────────────────────── RUN mkdir -p \ /var/www/html/bootstrap/cache \ /var/www/html/storage/framework/cache/data \ /var/www/html/storage/framework/sessions \ /var/www/html/storage/framework/testing \ /var/www/html/storage/framework/views \ /var/www/html/storage/app/public \ /var/www/html/storage/app/private/reports \ /var/www/html/storage/logs \ /var/log/php-fpm \ /var/log/supervisor # ── Entrypoint ──────────────────────────────────────────────── COPY docker/entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh WORKDIR /var/www/html EXPOSE 9000 ENTRYPOINT ["/entrypoint.sh"]