127 lines
4.5 KiB
Docker
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"] |