# PHP 8.0 == 3.16 # PHP 8.1 == 3.19 # PHP 8.2 == 3.21 # PHP 8.3 == 3.21 # PHP 8.4 == 3.21 ARG OS_VERSION=3.21 FROM quay.io/teras/alpine:${OS_VERSION} AS builder ARG PHP_VERSION=8.4 ARG PHP_SHORT_VERSION=84 ARG COMPOSER_VERSION=2.8.9 ENV PHP_VERSION=${PHP_VERSION} ENV PHP_SHORT_VERSION=${PHP_SHORT_VERSION} ENV COMPOSER_VERSION=${COMPOSER_VERSION} ENV SERVER_ROOT=/app 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 USER root WORKDIR ${SERVER_ROOT} ADD https://github.com/composer/composer/releases/download/${COMPOSER_VERSION}/composer.phar /usr/local/bin/composer # Create directory, and install required php app RUN /bin/mkdir -p ${COMPOSER_CACHE_DIR} ${COMPOSER_VENDOR_DIR} ${COMPOSER_BIN_DIR}; \ /bin/chown -R appuser:appuser ${COMPOSER_HOME}; \ /sbin/apk add --update --no-cache \ php${PHP_SHORT_VERSION} php${PHP_SHORT_VERSION}-common \ php${PHP_SHORT_VERSION}-cli php${PHP_SHORT_VERSION}-phar \ php${PHP_SHORT_VERSION}-iconv php${PHP_SHORT_VERSION}-mbstring \ php${PHP_SHORT_VERSION}-json php${PHP_SHORT_VERSION}-openssl ; \ /bin/chmod +rx /usr/local/bin/composer ; # Create symlinks to /usr/bin/php in case it doesn't exists RUN ln -ns /usr/bin/php${PHP_SHORT_VERSION} /usr/bin/php ; exit 0 # CLEAN APK CACHES RUN rm -vrf /var/cache/apk/* FROM scratch ARG PHP_VERSION=8.4 ARG COMPOSER_VERSION=2.8.9 # Environment variables for user root 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 ENV LANG=en_US.UTF-8 LABEL maintainer="Muhamad Aditya Prima " LABEL name="php" LABEL version="${PHP_VERSION}" LABEL distribution-scope="public" #labels for container catalog LABEL summary="PHP ${PHP_VERSION} on alpine linux container image" LABEL description="Provide php on alpine linux container base image" LABEL io.k8s.description="PHP with composer" LABEL io.k8s.display-name="PHP ${PHP_VERSION}" COPY --from=builder / / WORKDIR ${SERVER_ROOT} USER appuser ENV PATH=${PATH}:${COMPOSER_BIN_DIR}:${COMPOSER_VENDOR_DIR}/bin STOPSIGNAL SIGQUIT CMD ["/usr/bin/php", "-v"]