ARG OS_VERSION=9.5 FROM docker.io/almalinux:${OS_VERSION} AS builder ARG OS_SHORT_VERSION=9 ARG PHP_VERSION=8.4 ARG COMPOSER_VERSION=2.8.9 ENV PHP_VERSION=${PHP_VERSION} ENV COMPOSER_VERSION=${COMPOSER_VERSION} ENV SERVER_ROOT=/app ENV COMPOSER_HOME=/mnt/rootfs/app/.composer ENV COMPOSER_ALLOW_SUPERUSER=0 ENV COMPOSER_NO_INTERACTION=1 ENV COMPOSER_CACHE_DIR=${COMPOSER_HOME}/cache ENV COMPOSER_VENDOR_DIR=${COMPOSER_HOME}/vendor ENV COMPOSER_BIN_DIR=${COMPOSER_HOME}/bin USER root WORKDIR ${SERVER_ROOT} RUN /bin/mkdir -p /mnt/rootfs; \ /bin/mkdir -p ${COMPOSER_CACHE_DIR} ${COMPOSER_VENDOR_DIR} ${COMPOSER_BIN_DIR}; \ /bin/dnf -y update; \ /bin/rpm -Uvh --replacepkgs --replacefiles \ https://rpms.remirepo.net/enterprise/remi-release-${OS_SHORT_VERSION}.rpm; \ /bin/dnf -y module reset php; \ /bin/dnf -y module enable php:remi-${PHP_VERSION}; \ /bin/dnf install --installroot /mnt/rootfs \ coreutils-single \ glibc-minimal-langpack \ php \ php-cli \ php-common \ php-iconv \ php-json \ php-mbstring \ php-phar \ --releasever 9 --setopt install_weak_deps=false --nodocs -y; \ /bin/dnf --installroot /mnt/rootfs clean all; ADD https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar /mnt/rootfs/usr/local/bin/composer # Additional hacks for kickstart file and backward compatable support RUN /bin/rm -rf /mnt/rootfs/var/cache/dnf /mnt/rootfs/var/log/dnf* /mnt/rootfs/var/lib/dnf /mnt/rootfs/var/log/yum.* /mnt/rootfs/var/lib/rpm/* ; \ /bin/date +%Y%m%d_%H%M > /mnt/rootfs/etc/BUILDTIME ; \ /bin/echo '%_install_langs C.utf8' > /mnt/rootfs/etc/rpm/macros.image-language-conf; \ /bin/echo 'LANG="C.utf8"' > /mnt/rootfs/etc/locale.conf; \ /bin/echo 'container' > /mnt/rootfs/etc/dnf/vars/infra; \ /bin/rm -f /mnt/rootfs/etc/machine-id; \ /bin/touch /mnt/rootfs/etc/machine-id; \ /bin/touch /mnt/rootfs/etc/resolv.conf; \ /bin/touch /mnt/rootfs/etc/hostname; \ /bin/touch /mnt/rootfs/etc/.pwd.lock; \ /bin/chmod 600 /mnt/rootfs/etc/.pwd.lock; \ /bin/rm -rf /mnt/rootfs/usr/share/locale/en* /mnt/rootfs/boot /mnt/rootfs/dev/null /mnt/rootfs/var/log/hawkey.log \ /mnt/rootfs/usr/share/zoneinfo /mnt/rootfs/usr/share/licenses/* \ /mnt/rootfs/etc/yum.repos.d ; \ /bin/echo '0.000000 1728971976 0.000000' > /mnt/rootfs/etc/adjtime; \ /bin/echo '1728971976' >> /mnt/rootfs/etc/adjtime; \ /bin/echo 'LOCAL' >> /mnt/rootfs/etc/adjtime; \ /bin/echo 'KEYMAP="us"' > /mnt/rootfs/etc/vconsole.conf; \ /bin/echo 'FONT="eurlatgr"' >> /mnt/rootfs/etc/vconsole.conf; \ /bin/mkdir -p /mnt/rootfs/run/lock; \ /bin/cp -r ../usr/share/zoneinfo /mnt/rootfs/usr/share/zoneinfo; \ /bin/cp ../usr/share/zoneinfo/UTC /mnt/rootfs/etc/localtime ; \ /bin/echo "appuser:x:10000:" >> /mnt/rootfs/etc/group ; \ /bin/echo "appuser:x:10000:10000:appuser:/app:/bin/sh" >> /mnt/rootfs/etc/passwd ; \ /bin/echo "appuser:!!:20070::::::" >> /mnt/rootfs/etc/shadow; \ /bin/chmod +rx /mnt/rootfs/usr/local/bin/composer; FROM scratch ARG PHP_VERSION=8.4 ARG COMPOSER_VERSION=2.8.9 # Environment variables for user root ENV LANG=en_US.UTF-8 ENV PHP_VERSION=${PHP_VERSION} ENV COMPOSER_VERSION=${COMPOSER_VERSION} ENV SERVER_ROOT=/app ENV COMPOSER_HOME=${SERVER_ROOT}/.composer ENV COMPOSER_ALLOW_SUPERUSER=0 ENV COMPOSER_NO_INTERACTION=1 ENV COMPOSER_CACHE_DIR=${COMPOSER_HOME}/cache ENV COMPOSER_VENDOR_DIR=${COMPOSER_HOME}/vendor ENV COMPOSER_BIN_DIR=${COMPOSER_HOME}/bin LABEL maintainer="Muhamad Aditya Prima " LABEL name="php-micro" LABEL version="${PHP_VERSION}" LABEL distribution-scope="public" #labels for container catalog LABEL summary="PHP ${PHP_VERSION} on almalinux-micro container image" LABEL description="Provide php on almalinux-micro container base image" LABEL io.k8s.description="PHP with composer" LABEL io.k8s.display-name="PHP ${PHP_VERSION}" COPY --from=builder /mnt/rootfs / ENV PATH="${PATH}:${COMPOSER_BIN_DIR}:${COMPOSER_VENDOR_DIR}/bin" ENV TZ=UTC WORKDIR ${SERVER_ROOT} RUN /bin/mkdir -p /app; \ /bin/chmod 700 /app; \ /bin/chown -R 10000:10000 /app; \ /bin/chown -R appuser:appuser ${COMPOSER_HOME}; USER appuser WORKDIR /app STOPSIGNAL SIGQUIT CMD ["/usr/bin/php", "-v"]