############################################################################### # KOIPB MAT — PHP-FPM Runtime Image # Sistem Kehadiran & Cabutan Bertuah Mesyuarat Agung Tahunan KOIPB # PHP 8.4 + extension Laravel (pdo_mysql, gd, zip, intl, opcache, ...) ############################################################################### FROM php:8.4-fpm LABEL org.opencontainers.image.title="KOIPB MAT" \ org.opencontainers.image.description="Sistem Kehadiran & Cabutan Bertuah MAT KOIPB" # ── System libraries ────────────────────────────────────────────────────────── RUN apt-get update && apt-get install -y --no-install-recommends \ git \ curl \ zip \ unzip \ # zip extension (openspout XLSX = zip-based) libzip-dev \ # GD: PNG, JPEG, FreeType libpng-dev \ libjpeg62-turbo-dev \ libfreetype6-dev \ # mbstring libonig-dev \ # xml / intl libxml2-dev \ libicu-dev \ # mysql client (wait-for-db dalam entrypoint) default-mysql-client \ && rm -rf /var/lib/apt/lists/* # ── GD ──────────────────────────────────────────────────────────────────────── RUN docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install -j"$(nproc)" gd # ── Core PHP extensions ─────────────────────────────────────────────────────── RUN docker-php-ext-install -j"$(nproc)" \ pdo_mysql \ mbstring \ exif \ pcntl \ bcmath \ zip \ intl \ opcache # ── Composer ────────────────────────────────────────────────────────────────── COPY --from=composer:2 /usr/bin/composer /usr/bin/composer # ── Working directory ───────────────────────────────────────────────────────── WORKDIR /var/www/html # ── Entrypoint ──────────────────────────────────────────────────────────────── COPY docker/entrypoint.sh /usr/local/bin/entrypoint.sh RUN chmod +x /usr/local/bin/entrypoint.sh EXPOSE 9000 ENTRYPOINT ["entrypoint.sh"] CMD ["php-fpm"]