GLPI 12.0.0 | PHP 8.3 | AlmaLinux 9 | Apache/PHP-FPM | Redis opcional | JMBA Soluções
3.9K
O GLPI é uma aplicação de gestão de serviços e gerenciamento de ativos 100% web. Foi prioritariamente desenvolvida para atender às necessidades de Gestores de TI no gerenciamento de chamados de Helpdesk e transformou-se numa poderosa plataforma de gerenciamento de ativos e serviços, provendo aos gestores informações “on time” de seus recursos físicos e humanos.
Certifique-se de que o Docker e o Docker Compose estão instalados no seu ambiente:
Imagem mantida pela JMBA Soluções, com GLPI 12.0.0, PHP 8.3, AlmaLinux 9, Apache, PHP-FPM e cron. O banco de dados e o Redis são serviços separados. A build publicada é para Linux amd64:
jmbasolucoes/glpi:latest
jmbasolucoes/glpi:12.0.0
jmbasolucoes/glpi:11.0.11
jmbasolucoes/glpi:10.0.28
docker pull jmbasolucoes/glpi:12.0.0
# Ou acompanhe a tag latest:
docker pull jmbasolucoes/glpi:latest
Fontes: lançamento GLPI 12 e release 12.0.0.
mkdir -p /data/glpi-12/glpi/documents
mkdir -p /data/glpi-12/glpi/marketplace
mkdir -p /data/glpi-12/glpi/plugins
mkdir -p /data/glpi-12/glpi/files/_pictures
mkdir -p /data/glpi-12/glpi/files/_plugins
mkdir -p /data/glpi-12/glpi/etc
mkdir -p /data/glpi-12/glpi/imagens-custom
mkdir -p /data/glpi-12/backup
mkdir -p /data/glpi-12/percona/lib
chown 48:48 -R /data/glpi-12/glpi
chown 1001:0 -R /data/glpi-12/percona
Vamos criar uma nova network para que os nossos containers possam se comunicar diretamente pelo nome, garantindo que o GLPI não perca a conexão com o banco de dados:
docker network create glpi
Antes de iniciar o banco de dados e o GLPI, é essencial configurar as variáveis de ambiente no arquivo .env. Este arquivo deve conter as credenciais do banco de dados e configurações do GLPI. Crie o arquivo .env na mesma pasta do seu compose.yaml, com valores próprios para sua instalação.
Aqui estão as variáveis que você deve configurar:
MYSQL_ROOT_PASSWORD=root_password
MYSQL_DATABASE=glpi
MYSQL_USER=glpi_user
MYSQL_PASSWORD=glpi_password
TZ=America/Sao_Paulo
As variáveis de ambiente MYSQL_ROOT_PASSWORD, MYSQL_DATABASE, MYSQL_USER, e MYSQL_PASSWORD devem ser ajustadas de acordo com sua configuração do banco de dados. No exemplo, TZ é repassado ao serviço de banco. A imagem GLPI é construída com o fuso America/Sao_Paulo.
Agora, com o .env configurado corretamente, podemos prosseguir com os próximos passos.
Com as variáveis definidas no arquivo .env, vamos iniciar o container do banco de dados MySQL com as credenciais configuradas:
docker run --name db-glpi-12 --network glpi \
--env-file .env \
-v /data/glpi-12/percona/lib/:/var/lib/mysql \
-d percona/percona-server:8.0 --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci
Inicie o container GLPI. As variáveis MYSQL_* inicializam o banco; a conexão do GLPI é configurada pelo instalador e salva em /etc/glpi/config_db.php:
docker run --name glpi-12 --network glpi -p 80:80 \
-v /data/glpi-12/glpi/documents:/var/lib/glpi/files/data-documents \
-v /data/glpi-12/glpi/imagens-custom:/usr/share/glpi/public/pics/imagens-custom \
-v /data/glpi-12/glpi/marketplace:/usr/share/glpi/marketplace \
-v /data/glpi-12/glpi/plugins:/usr/share/glpi/plugins \
-v /data/glpi-12/glpi/files/_pictures:/var/lib/glpi/files/_pictures \
-v /data/glpi-12/glpi/files/_plugins:/var/lib/glpi/files/_plugins \
-v /data/glpi-12/glpi/etc:/etc/glpi/ \
-v /data/glpi-12/backup:/backup/ \
-d jmbasolucoes/glpi:12.0.0
Usando o Docker Compose, podemos configurar os serviços do GLPI, do MySQL e do Redis com as variáveis definidas no .env:
services:
glpi_app:
image: jmbasolucoes/glpi:12.0.0
container_name: glpi-12
depends_on:
- glpidb
- glpi_redis
volumes:
- /data/glpi-12/glpi/documents:/var/lib/glpi/files/data-documents
- /data/glpi-12/glpi/marketplace:/usr/share/glpi/marketplace
- /data/glpi-12/glpi/plugins:/usr/share/glpi/plugins
- /data/glpi-12/glpi/files/_pictures:/var/lib/glpi/files/_pictures
- /data/glpi-12/glpi/files/_plugins:/var/lib/glpi/files/_plugins
- /data/glpi-12/glpi/etc:/etc/glpi
- /data/glpi-12/glpi/imagens-custom:/usr/share/glpi/public/pics/imagens-custom
- /data/glpi-12/backup:/backup
environment:
- GLPI_ENABLE_REDIS_SESSIONS=true
- GLPI_CONFIGURE_REDIS_CACHE=true
- GLPI_REDIS_HOST=glpi_redis
- GLPI_REDIS_PORT=6379
- GLPI_REDIS_SESSION_DB=1
- GLPI_REDIS_CACHE_DB=0
networks:
- glpi
ports:
- 8085:80
glpidb:
image: percona/percona-server:8.0
container_name: db-glpi-12
networks:
- glpi
volumes:
- /data/glpi-12/percona/lib:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- TZ=${TZ}
glpi_redis:
image: redis:7-alpine
container_name: glpi-redis
command: redis-server --save "" --appendonly no
networks:
- glpi
networks:
glpi:
driver: bridge
docker compose up -d
No instalador, use db-glpi-12 (ou o nome do serviço glpidb no Compose) como servidor, e os valores MYSQL_DATABASE, MYSQL_USER e MYSQL_PASSWORD do .env. O container GLPI não faz instalação nem migração automática do banco:
Acesse o GLPI no navegador com o IP do servidor:
http://IP_DNS ou http://IP_DNS:PORTAPara consultar as opções de instalação pelo console, execute como o usuário da aplicação:
docker exec --user apache -it glpi-12 glpi-console database:install --help
Ao subir com o Docker Compose acima, o start.sh gera /tmp/php.d/99-glpi-redis-session.ini com session.save_handler = redis e executa glpi-console glpi:cache:configure --context=core --dsn=redis://.... Caso o config_db.php ainda não exista (antes da instalação do GLPI), basta finalizar a instalação via web/console e reiniciar o container para que a configuração de cache seja aplicada. Para desativar a integração, ajuste as variáveis GLPI_ENABLE_REDIS_SESSIONS e GLPI_CONFIGURE_REDIS_CACHE para false.
O container executa /usr/share/glpi/front/cron.php a cada minuto. A entrada pertence ao crontab do root, mas utiliza runuser para executar o PHP efetivamente como apache. O daemon crond permanece como root apenas para poder iniciar a tarefa com essa identidade; não é necessário alterar o usuário principal do container.
Para acompanhar ou disparar a rotina manualmente:
docker exec glpi-12 tail -f /var/log/glpi/cron.log
docker exec --user apache glpi-12 /usr/bin/php /usr/share/glpi/front/cron.php
A imagem configura o GLPI por variáveis de ambiente, sem editar /etc/glpi.
O Nginx deve enviar X-Forwarded-Proto com o protocolo externo ($scheme).
Informe os IPs ou CIDRs dos proxies que chegam ao Apache, separados por vírgulas:
environment:
GLPI_TRUSTED_REVERSE_PROXIES: "172.28.0.1"
GLPI_REVERSE_PROXY_HEADERS: "X-Forwarded-Proto"
Esse IP é apenas um exemplo: use a origem observada em sua implantação.
Sem proxies informados, nenhum cabeçalho encaminhado é considerado confiável.
Também são aceitos IPv6/CIDR e os valores GLPI REMOTE_ADDR e PRIVATE_SUBNETS;
use esses valores amplos somente em redes onde o acesso ao backend é restrito aos proxies.
Portas públicas do backend devem ser restritas ao proxy, especialmente quando o Docker
apresenta diferentes clientes com o mesmo IP de gateway.
A configuração é regenerada em /tmp/glpi-reverse-proxy.php a cada inicialização,
vale para CLI e PHP-FPM e não altera arquivos persistentes.
Constantes existentes em /etc/glpi/local_define.php têm precedência;
remova definições anteriores de proxy para passar a usar as variáveis.
Após mudar as variáveis, recrie o container e inicie uma nova sessão no navegador.
Use GLPI_TRUSTED_REVERSE_PROXIES: "PRIVATE_SUBNETS" quando o backend
estiver isolado dos clientes. Conecte Nginx e GLPI à mesma rede Docker dedicada,
configure o upstream como o nome do serviço/container na porta 80 e remova
ports do serviço GLPI. O Nginx continua publicando as portas externas.
Não é necessário reconstruir a imagem quando o IP do proxy mudar.
Em redes compartilhadas com outros serviços não confiáveis, prefira uma rede mais restrita. Preserve a conexão do Nginx à rede dedicada também no Compose ou na configuração de implantação que o recria. Essa configuração não move, renomeia nem altera a estrutura de arquivos do GLPI.
Content type
Image
Digest
sha256:fbf1dbfa8…
Size
361.3 MB
Last updated
4 days ago
docker pull jmbasolucoes/glpi