php/Dockerfile.micro

127 lines
4.5 KiB
Docker

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 \
glibc-minimal-langpack \
php \
php-cli \
php-common \
php-iconv \
php-json \
php-mbstring \
php-phar \
--releasever ${OS_SHORT_VERSION} --setopt install_weak_deps=false --nodocs -y; \
/bin/dnf --installroot /mnt/rootfs clean all; \
/bin/rm -rf /mnt/rootfs/var/cache/* \
/mnt/rootfs/var/log/* \
/mnt/rootfs/var/lib/dnf \
/mnt/rootfs/usr/share/locale/* \
/mnt/rootfs/usr/share/licenses/* \
/mnt/rootfs/usr/share/man/* \
/mnt/rootfs/usr/share/doc/* \
/mnt/rootfs/var/log/yum.* \
/mnt/rootfs/var/lib/rpm/* ;
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/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 <aprimediet@gmail.com>"
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"]