Before moving on, please consider giving us a GitHub star ⭐️. Thank you!
Although there is already an Official Version of GLPI (https://github.com/glpi-project/glpi) on Docker Hub (https://hub.docker.com/r/glpi/glpi), I believe it is possible to use other more performant Docker Images in a docker-compose.yml and just map the source code inside these containers.
- The docker-compose.yml file is very simple. Take a look.
- If NGINX or MariaDB receives an update, it will not be necessary to rebuild the glpi-fpm image.
- If PHP or GLPI itself receives an update, it will be necessary to create a new glpi-fpm image to reflect the updates. This procedure is performed daily by the workflow.
- The jarbelix/glpi-fpm image supports both amd64 and arm64 architectures, while glpi/glpi image
only supports amd64. Today (January 17, 2026) I noticed that this request (glpi-project/docker-images#245) was accepted on January 6, 2026. - Why PHP-FPM with Nginx ?
- Understanding PHP-FPM - https://dev.to/arsalanmee/understanding-php-fpm-a-comprehensive-guide-3ng8
- Demystifying Nginx and PHP-FPM - https://medium.com/@mgonzalezbaile/demystifying-nginx-and-php-fpm-for-php-developers-bba548dd38f9
- How to Configure PHP-FPM with NGINX - https://www.digitalocean.com/community/tutorials/php-fpm-nginx
- And yes, I chose Nginx because it's more performant than Apache.
- Just do a
docker compose pullwithin the directory where docker-compose.yml is located to download the new versions and then adocker compose up -dand the new versions will already be in use.
git clone https://github.com/Tiozao-do-Linux/glpi-nginx.git
cd glpi-nginx
cp env.example .env
docker compose up -d; docker compose logs -fdocker compose ps
NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS
glpi-nginx-database-1 mariadb:latest "docker-entrypoint.s…" database 3 seconds ago Up 2 seconds 3306/tcp
glpi-nginx-glpi-fpm-1 jarbelix/glpi-fpm "/entrypoint.sh php-…" glpi-fpm 3 seconds ago Up 1 second 9000/tcp
glpi-nginx-nginx-1 nginx:latest "/docker-entrypoint.…" nginx 3 seconds ago Up 1 second 0.0.0.0:80->80/tcp, [::]:80->80/tcp, 0.0.0.0:443->443/tcp, [::]:443->443/tcpdocker images | grep -E '(REPOSITORY|glpi-fpm|mariadb|nginx)'
REPOSITORY TAG IMAGE ID CREATED SIZE
jarbelix/glpi-fpm latest 60131ae3c08d 5 seconds ago 717MB
nginx latest 07ccdb783875 11 days ago 152MB
mariadb latest dfbea441e6fc 2 months ago 330MBdocker volume ls | grep _glpidocker exec -it glpi-nginx-glpi-fpm-1 bashdocker compose logs glpi-fpm -f --tail 50
glpi-fpm-1 | ____________________________________________________________________________
glpi-fpm-1 | /\ \
glpi-fpm-1 | \_| PHP-FPM - https://github.com/Tiozao-do-Linux/glpi-nginx |
glpi-fpm-1 | | _______________________________________________________________________|_
glpi-fpm-1 | \_/_________________________________________________________________________/
glpi-fpm-1 |
glpi-fpm-1 |
glpi-fpm-1 | /------------------------------------------------------------------------------\
glpi-fpm-1 | | Wait 10 seconds for the database to be ready...
glpi-fpm-1 | \------------------------------------------------------------------------------/
glpi-fpm-1 |
glpi-fpm-1 | /------------------------------------------------------------------------------\
glpi-fpm-1 | | Check GLPI Requirements
glpi-fpm-1 | \------------------------------------------------------------------------------/
glpi-fpm-1 |
glpi-fpm-1 | /------------------------------------------------------------------------------\
glpi-fpm-1 | | GLPI is not configured yet. Performing CLI installation. Please wait...
glpi-fpm-1 | \------------------------------------------------------------------------------/
glpi-fpm-1 |
glpi-fpm-1 |
glpi-fpm-1 | Welcome to
glpi-fpm-1 |
glpi-fpm-1 | ██████╗ ██╗ ██████╗ ██╗
glpi-fpm-1 | ██╔════╝ ██║ ██╔══██╗██║
glpi-fpm-1 | ██║ ███╗██║ ██████╔╝██║
glpi-fpm-1 | ██║ ██║██║ ██╔═══╝ ██║
glpi-fpm-1 | ╚██████╔╝███████╗██║ ██║
glpi-fpm-1 | ╚═════╝ ╚══════╝╚═╝ ╚═╝
glpi-fpm-1 |
glpi-fpm-1 | /------------------------------------------------------------------------------\
glpi-fpm-1 | | Starting GLPI at Sun Feb 1 02:19:06 UTC 2026...
glpi-fpm-1 | \------------------------------------------------------------------------------/
glpi-fpm-1 | [GLPI Cron Job][Sun Feb 1 02:19:07 UTC 2026][nginx] : [php /var/www/html/glpi/front/cron.php]
glpi-fpm-1 | [GLPI Cron Job][Sun Feb 1 02:20:07 UTC 2026][nginx] : [php /var/www/html/glpi/front/cron.php]
glpi-fpm-1 | [GLPI Cron Job][Sun Feb 1 02:21:07 UTC 2026][nginx] : [php /var/www/html/glpi/front/cron.php]
Important
If you want to manually follow the Wizard as per the documentation at https://glpi-install.readthedocs.io/en/latest/install/wizard.html, change the GLPI_AUTO_INSTALL variable from "true" to "false" in the .env file; otherwise, the Wizard will run automatically via php glpi/bin/console.
- Open a browser with the URL https://localhost
- https://glpi.tiozaodolinux.com/
- https://glpi.tiozaodolinux.com/info.php
- https://glpi.tiozaodolinux.com/status/nginx
- https://glpi.tiozaodolinux.com/status/fpm
A single command line with openssl is all it takes to obtain the private key (nginx.key) and certificate (nginx.crt) files. The files in this repository were generated as follows:
openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout nginx.key -out nginx.crt -subj "/C=US/ST=State/L=City/O=Organization/CN=localhost"
The Dockerfile file is very simple. Take a look and clear up any doubts. I used AlmaLinux as a base to install the packages related to PHP.
The docker-compose.yml file can be edited to reflect your preferences (exposed ports, image versions, etc.).
The custom-nginx.conf file contains the basic Nginx server configurations.
The custom-php.ini file contains the PHP variable configurations.
In production mode, adjust the locations in custom-nginx.conf to allow only your networks. Comment out the 'allow all' line and uncomment the line corresponding to your network.
















