Files
eCert-MBIP/docker/php/Dockerfile
2026-05-20 17:05:00 +08:00

71 lines
2.9 KiB
Docker

###############################################################################
# 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"]