GLPI is a Free Asset and IT Management Software package, Data center management, ITIL Service Desk, licenses tracking and software auditing.
docker pull library/mariadb
docker run -d --name glpi -p 8080:8080 --restart always mariadb:11.8
podman run -d --name glpi -p 8080:8080 --restart always mariadb:11.8
skopeo inspect docker://docker.io/library/mariadb:11.8
oras pull mariadb:11.8
docker compose up -d
services:
app:
build:
context: ".docker/app"
args:
PHP_VERSION: "8.4"
restart: "unless-stopped"
volumes:
- ".:/var/www/glpi:rw"
- "custom_php_ini:/usr/local/etc/php/custom_conf.d/:rw"
ports:
- "8080:80"
- "8090:8090" # E2E test server
- "9637:9637"
depends_on:
- db
extra_hosts:
- "host.docker.internal:host-gateway"
db:
image: "mariadb:11.8"
restart: "unless-stopped"
volumes:
- "db:/var/lib/mysql"
- ".docker/initdb.sql:/docker-entrypoint-initdb.d/initdb.sql"
environment:
MARIADB_ROOT_PASSWORD: "glpi"
MARIADB_DATABASE: "glpi"
MARIADB_USER: "glpi"
MARIADB_PASSWORD: "glpi"
expose:
- "3306"
mailpit:
image: "axllent/mailpit"
restart: "unless-stopped"
expose:
- "1025"
ports:
- "8025:8025"
dbgate:
image: "dbgate/dbgate:latest"
restart: "unless-stopped"
ports:
- "9000:3000"
environment:
CONNECTIONS: "glpi"
LABEL_glpi: "GLPI Mysql Server"
SERVER_glpi: "db"
USER_glpi: "glpi"
PASSWORD_glpi: "glpi"
PORT_glpi: 3306
ENGINE_glpi: "mysql@dbgate-plugin-mysql"
# OpenID OAuth server
# Opt-in: `docker compose --profile keycloak up -d keycloak`.
# Same host:9090 as in-container port so the OIDC issuer is identical whether
# reached from the browser (needs `127.0.0.1 keycloak.glpi.local` in /etc/hosts) or from
# the app container (compose DNS alias). See .docker/keycloak/README.md.
keycloak:
image: "quay.io/keycloak/keycloak:26.0"
profiles: ["keycloak"]
restart: "unless-stopped"
command: ["start-dev", "--import-realm", "--http-port=9090"]
environment:
KC_BOOTSTRAP_ADMIN_USERNAME: "admin"
KC_BOOTSTRAP_ADMIN_PASSWORD: "admin"
KC_HOSTNAME: "http://keycloak.glpi.local:9090"
KC_HTTP_ENABLED: "true"
KC_HEALTH_ENABLED: "true"
ports:
- "9090:9090"
# Network alias so the app container resolves the same hostname as the browser,
# keeping the OIDC issuer identical on both sides.
networks:
default:
aliases:
- "keycloak.glpi.local"
volumes:
- "./.docker/keycloak/realm-glpi.json:/opt/keycloak/data/import/realm-glpi.json:ro"
# To create a preconfigured LDAP object in GLPI, run `make console c='tools:generate_dev_ldap'`
openldap:
image: "osixia/openldap:latest"
restart: "unless-stopped"
environment:
LDAP_ORGANISATION: "GLPI"
LDAP_DOMAIN: "glpi.org"
LDAP_ADMIN_USERNAME: "admin"
LDAP_ADMIN_PASSWORD: "admin"
command: "--copy-service"
volumes:
- "./tests/LDAP/ldif/10-users.ldif:/container/service/slapd/assets/config/bootstrap/ldif/50-bootstrap.ldif:rw"
- "ldap_files:/var/lib/ldap:rw"
- "ldap_config:/etc/ldap/slapd.d/:rw"
volumes:
db:
custom_php_ini:
ldap_files:
ldap_config: