Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
142 changes: 142 additions & 0 deletions Dockerfile_nginx-php74
Original file line number Diff line number Diff line change
@@ -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 <[email protected]>'

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"]
3 changes: 3 additions & 0 deletions root/etc/php-fpm.d/custom.ini.j2
Original file line number Diff line number Diff line change
Expand Up @@ -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') }}