############################################################################### # eCert MBIP — PHP-FPM Runtime Image # PHP 8.4 + GD + imagick + semua extension Laravel ############################################################################### FROM php:8.4-fpm LABEL org.opencontainers.image.title="mySijil MBIP" \ org.opencontainers.image.description="Sistem Pengurusan Sijil Digital MBIP" # ── System libraries ────────────────────────────────────────────────────────── RUN apt-get update && apt-get install -y --no-install-recommends \ git \ curl \ zip \ unzip \ # zip extension libzip-dev \ # GD: PNG, JPEG, WebP, FreeType libpng-dev \ libjpeg62-turbo-dev \ libfreetype6-dev \ libwebp-dev \ # mbstring libonig-dev \ # xml / intl libxml2-dev \ libicu-dev \ # imagick libmagickwand-dev \ # mysql client (wait-for-db in entrypoint) default-mysql-client \ && rm -rf /var/lib/apt/lists/* # ── GD (untuk Intervention Image — GD driver) ───────────────────────────────── RUN docker-php-ext-configure gd \ --with-freetype \ --with-jpeg \ --with-webp \ && 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 # ── imagick (PECL) — tersedia sebagai driver alternatif ─────────────────────── RUN pecl install imagick \ && docker-php-ext-enable imagick \ && rm -rf /tmp/pear # ── Composer ────────────────────────────────────────────────────────────────── COPY --from=composer:2 /usr/bin/composer /usr/bin/composer # ── Working directory ───────────────────────────────────────────────────────── WORKDIR /var/www # ── 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"]