diff --git a/.travis.yml b/.travis.yml index 4362b5c..acf5cf8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,7 +13,8 @@ env: - secure: 'lms0WcFqVGGse7M0YW0zGgLtlvlCRL0fPMls0Ayy8tRfNuDWyVPzgS7u9jmdeb/L/NMxiSOnHgEg5DMyWovcyR+l65A3tL2vKkp0hG6bV8vB48QZH3/8Cz1PQ4iEVwQaCFU751M+lZzJobK9H40d0ecou1q1f8yyBwpf3YK6J/Y2Haii0Fu1j61Mjt+AtsXfQWXYfYKbCxx/AZn9gNwW7PEd6r9KTgQBLMXVRDtXUeqFrRNH6EeUxeWvs1Ik1dHTuPh+VF06UfV48b3hLGi9CFjdOSqtpt6e3BM0fVLCL/IoLonmcxillw2ds0hUWG4e8snyIUrd/JcqtyK3nmJ7/MA6q8+zCqYNMMTPjmt6sNUzyXWEUrvoZbgZjEshE/8cMFlyfoK3wRvbv6USFNk22SWXGCe7nW6x7DJLCN8Hke2y5UIbVBR/IFcM1zjXvX7HHVW8+F0E0+mwXwnxlsi9PoszZo3tbZv6kznr3JhiHT7HbQm4oKZA9muh432i4uMrzqsvhGPSmE+ebVSRObN9GApjp5BX1H9HSyA8kgnfTpNzbCooBsiK0OEKBBtI1NgSRw0oJdralaEWfaMjomM2dAhoR5G0/0U9a9inOyZiXcIi8GUmuuEKcskQRrVhbqBHTB2XC3o5/wl7k3K1sfvoB7JBwrftXYQnxCoghFwCkJM=' matrix: # Provide a list of GLPI version to build - - GLPI_VERSION=9.5.5 IMAGE_VARIANT=nginx-72 UPDATE_README=1 UPDATE_LATEST=1 + - GLPI_VERSION=9.5.6 IMAGE_VARIANT=nginx-php74 UPDATE_README=1 UPDATE_LATEST=1 + - GLPI_VERSION=9.5.5 IMAGE_VARIANT=nginx-72 - GLPI_VERSION=9.5.4 IMAGE_VARIANT=nginx-72 before_install: diff --git a/Dockerfile_nginx-php74 b/Dockerfile_nginx-php74 new file mode 100644 index 0000000..70c5807 --- /dev/null +++ b/Dockerfile_nginx-php74 @@ -0,0 +1,142 @@ +# First stage : download glpi + build it +FROM composer:latest as build_glpi + +ARG GLPI_VERSION +ARG GLPI_PATHS_ROOT=/var/www + +RUN mkdir -p "${GLPI_PATHS_ROOT}" +RUN curl -v --fail -o glpi.tgz -L "https://github.com/glpi-project/glpi/releases/download/${GLPI_VERSION}/glpi-${GLPI_VERSION}.tgz" \ + && tar -xzf glpi.tgz --strip 1 --directory ${GLPI_PATHS_ROOT} + +WORKDIR "${GLPI_PATHS_ROOT}" + +RUN curl --silent --show-error --fail --remote-name-all \ + https://raw.githubusercontent.com/glpi-project/glpi/${GLPI_VERSION}/composer.json \ + https://raw.githubusercontent.com/glpi-project/glpi/${GLPI_VERSION}/composer.lock \ + && COMPOSER_HOME=/tmp/composer composer require \ + --apcu-autoloader \ + --classmap-authoritative \ + --ignore-platform-reqs \ + --no-interaction \ + --no-progress \ + --optimize-autoloader \ + --prefer-dist \ + --update-no-dev \ + --working-dir ${GLPI_PATHS_ROOT} \ + apereo/phpcas \ + && rm -fv composer.json + +# Second stage : build final image +FROM php:7.4-fpm-alpine3.14 + +LABEL maintainer='Pierre GINDRAUD ' + +ARG GLPI_VERSION + +ENV GLPI_VERSION "${GLPI_VERSION}" +ENV GLPI_PATHS_ROOT /var/www +ENV GLPI_PATHS_PLUGINS /var/www/plugins +ENV GLPI_REMOVE_INSTALLER no +ENV GLPI_CHMOD_PATHS_FILES no +ENV GLPI_INSTALL_PLUGINS '' + +ENV PHP_MEMORY_LIMIT 64M + +ENV PHPFPM_PM dynamic +ENV PHPFPM_PM_MAX_CHILDREN 5 +ENV PHPFPM_PM_START_SERVERS 2 +ENV PHPFPM_PM_MIN_SPARE_SERVERS 1 +ENV PHPFPM_PM_MAX_SPARE_SERVERS 3 +ENV PHPFPM_PM_PROCESS_IDLE_TIMEOUT 10s +ENV PHPFPM_PM_MAX_REQUEST 500 +ENV PHPFPM_DECORATE_WORKERS_OUTPUT no + +# Install dependencies +RUN set -ex; \ + apk --no-cache add \ + curl \ + nginx \ + fping \ + graphviz \ + iputils \ + net-snmp-libs \ + py3-jinja2 \ + supervisor \ + tar \ + tzdata \ + ; \ + python3 -m ensurepip ; \ + pip3 install \ + j2cli \ + ; \ + apk add --no-cache --virtual .build-deps \ + $PHPIZE_DEPS \ + autoconf \ + bzip2-dev \ + coreutils \ + curl-dev \ + freetype-dev \ + icu-dev \ + imap-dev \ + libevent-dev \ + libjpeg-turbo-dev \ + libmcrypt-dev \ + libpng-dev \ + libxml2-dev \ + libzip-dev \ + net-snmp-dev \ + openldap-dev \ + pcre-dev \ + imagemagick-dev \ + ; \ + docker-php-source extract ; \ + docker-php-ext-configure gd --with-freetype --with-jpeg ; \ + docker-php-ext-configure ldap ; \ + docker-php-ext-install -j$(nproc) \ + bz2 \ + exif \ + gd \ + imap \ + intl \ + ldap \ + mysqli \ + opcache \ + snmp \ + soap \ + xmlrpc \ + zip \ + ; \ + pecl install apcu && docker-php-ext-enable apcu ; \ + docker-php-source delete ; \ + runDeps="$( \ + scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ + | tr ',' '\n' \ + | sort -u \ + | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ + )"; \ + apk add --virtual .nextcloud-phpext-rundeps $runDeps; \ + apk del .build-deps ; \ + mkdir -p /run/nginx ; \ + find "${GLPI_PATHS_ROOT}" -mindepth 1 -maxdepth 1 -not -name '.*' -and -not -name '..' | xargs rm -rfv + +# Copy glpi build +COPY --from=build_glpi --chown=www-data:www-data ${GLPI_PATHS_ROOT} ${GLPI_PATHS_ROOT} + +# Add some configurations files +COPY root/ / +COPY /docker-entrypoint.sh / +COPY /docker-entrypoint.d/* /docker-entrypoint.d/ + +RUN chmod -R +x /docker-entrypoint.d/ /usr/local/bin/cronwrapper.py \ + && chmod -R g=rX,o=--- /var/www/* \ + && addgroup nginx www-data + +EXPOSE 80/tcp +VOLUME ["/var/www/files", "/var/www/config"] +WORKDIR "${GLPI_PATHS_ROOT}" + +HEALTHCHECK --interval=5s --timeout=3s --retries=3 \ + CMD curl --silent http://127.0.0.1:80/fpm-ping | grep -q pong || exit 1 + +ENTRYPOINT ["/docker-entrypoint.sh"] +CMD ["/usr/bin/supervisord", "--configuration", "/etc/supervisord.conf"] diff --git a/root/etc/php-fpm.d/custom.ini.j2 b/root/etc/php-fpm.d/custom.ini.j2 index 0887d91..7383407 100644 --- a/root/etc/php-fpm.d/custom.ini.j2 +++ b/root/etc/php-fpm.d/custom.ini.j2 @@ -6,4 +6,7 @@ session.auto_start=off session.use_trans_sid=0 display_errors=stderr display_startup_errors=On +{% if env('PHPFPM_DECORATE_WORKERS_OUTPUT') %} +decorate_workers_output={{ env('PHPFPM_DECORATE_WORKERS_OUTPUT') }} +{% endif %} memory_limit={{ env('PHP_MEMORY_LIMIT') }}