最近需要在Ubuntu上使用Docker安装glpi,记录一下操作。
首先更新服务器:
sudo apt update
sudo apt upgrade
然后安装docker功能,设置docker开机自启动,以及将当前用户添加进docker组以免每次都要sudo:
sudo apt install docker.io docker-compose -y
sudo systemctl start docker
sudo systemctl enable docker
sudo usermod -aG docker $USER
重要提示: 执行此命令后,您需要退出服务器并重新登录(或newgrp docker),以使用户组更改生效。
基于众所周知的原因,为docker添加国内镜像源:
sudo mkdir -p /etc/docker
sudo nano /etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://hub-mirror.c.163.com"
]
}
sudo systemctl daemon-reload
sudo systemctl restart docker
为 GLPI 创建一个专用目录并进入:
mkdir glpi-docker
cd glpi-docker
新建.env环境文件:
nano .env
GLPI_VERSION=latest
MARIADB_VERSION=latest
TZ=Asia/Shanghai
MYSQL_ROOT_PASSWORD=your-strong-root-password
MYSQL_DATABASE=glpi_db
MYSQL_USER=glpi_user
MYSQL_PASSWORD=your-strong-glpi-db-password
新建yml文件:
nano docker-compose.yml
version: '3.8'
services:
# MariaDB 数据库服务
glpi-db:
image: mariadb:${MARIADB_VERSION:-latest}
container_name: glpi-db
restart: always
# 从 .env 文件加载 MYSQL_... 变量
env_file:
- .env
environment:
# 为数据库设置时区
TZ: ${TZ}
volumes:
- glpi-db-data:/var/lib/mysql
# 增加 60 秒的优雅关机宽限期
stop_grace_period: 60s
networks:
- glpi-net
# GLPI 应用服务
glpi-app:
image: ghcr.io/glpi-project/glpi:${GLPI_VERSION:-latest}
container_name: glpi-app
restart: always
# 也加载 .env 文件 (主要为了 TZ)
env_file:
- .env
ports:
# 使用 80 端口
- "80:80"
environment:
# (这些是 GLPI 应用启动时真正读取的官方变量)
GLPI_DB_HOST: glpi-db
GLPI_DB_PORT: 3306
# (这里是关键的“映射”:将 .env 中的 MYSQL_... 值赋给 GLPI_... 变量)
GLPI_DB_USER: ${MYSQL_USER}
GLPI_DB_PASSWORD: ${MYSQL_PASSWORD}
GLPI_DB_NAME: ${MYSQL_DATABASE}
# 为 GLPI 应用设置时区
TZ: ${TZ}
volumes:
- glpi-files-data:/var/www/html/files
- glpi-config-data:/var/www/html/config
- glpi-plugins-data:/var/www/html/plugins
networks:
- glpi-net
depends_on:
- glpi-db # 确保数据库先于应用启动
# Docker 命名卷 (最佳实践)
volumes:
glpi-db-data:
glpi-files-data:
glpi-config-data:
glpi-plugins-data:
# Docker 网络
networks:
glpi-net:
开始运行docker:
docker compose up -d
运行后使用如下命令查看docker状态:
docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
glpi-app /opt/glpi/entrypoint.sh /o ... Up 0.0.0.0:80->80/tcp,:::80->80/tcp
glpi-db docker-entrypoint.sh mariadbd Up 3306/tcp
state是Up基本上就OK了,继续查看log状态:
docker-compose logs glpi-app
出现如下内容说明安装没问题,可以输入服务器地址开始使用了:
glpi-app | ================================================================
glpi-app | Welcome to
glpi-app |
glpi-app | ██████╗ ██╗ ██████╗ ██╗
glpi-app | ██╔════╝ ██║ ██╔══██╗██║
glpi-app | ██║ ███╗██║ ██████╔╝██║
glpi-app | ██║ ██║██║ ██╔═══╝ ██║
glpi-app | ╚██████╔╝███████╗██║ ██║
glpi-app | ╚═════╝ ╚══════╝╚═╝ ╚═╝
glpi-app |
glpi-app | https://glpi-project.org
glpi-app |
glpi-app | ================================================================
glpi-app | GLPI installation completed successfully!
glpi-app |
glpi-app | Please access GLPI via your web browser to complete the setup.
glpi-app | You can use the following credentials:
glpi-app |
glpi-app | - Username: glpi
glpi-app | - Password: glpi
glpi-app | ================================================================
glpi-app |
glpi-app | [Wed Nov 05 15:17:35.106636 2025] [mpm_prefork:notice] [pid 675:tid 675] AH00163: Apache/2.4.65 (Debian) configured -- resuming normal operations
glpi-app | [Wed Nov 05 15:17:35.106696 2025] [core:notice] [pid 675:tid 675] AH00094: Command line: 'apache2 -D FOREGROUND'
注意yml里面设置了60秒grace关机超时,所以关机可以直接shutdown基本没问题,重启时docker自动重启,至此安装完成。