容器化部署GLPI 10系列升级到GLPI 11系列
项目背景
GLPI(Gestionnaire Libre de Parc Informatique)是一款开源的IT资产管理和服务管理工具,广泛应用于企业IT资源管理、工单系统、库存跟踪等场景。随着GLPI 11版本的发布,新功能、性能优化和安全增强成为推动升级的主要因素。GLPI 11引入了现代化的技术栈,包括对PHP 8.1及更高版本的兼容性支持,改进了数据库查询效率,并优化了用户界面体验。GLPI 10的维护周期逐渐接近尾声,官方支持重心转向新版本,升级可确保系统长期稳定性和安全性。
项目需求
GLPI不同版本对环境及数据库的要求
| GLPI 11.x | GLPI 10.x | |
|---|---|---|
| PHP版本 | 8.0+ | 7.2.5+ |
| Mysql | 8.0+ | 5.7+ |
| MariaDB | 10.2+ | 10.5+ |
| Apache | 必须 Apache 2.4+ | 推荐/支持 Apache 2.2+ |
项目目标
通过升级到GLPI 11,企业能够获得更高效、更安全的IT管理平台,同时为未来的功能扩展和技术迭代奠定基础。项目需确保平滑迁移,最小化对现有业务流程的影响。
GLPI 10 项目架构:Docker+MySQL+Apache+PHP
- Docker:25.0.5
- MySQL:5.7
- Apache:2.4
由于构建GLPI 10的应用镜像时,使用的基础镜像是php:8.2-apache镜像,该镜像包含的PHP环境及Apache版本足以支持GLPI 10系列升级到GLPI 11系列,后续的升级可以沿用该基础镜像,也可以使用更高版本的基础镜像。
GLPI 10系列的部署可以参考:Ubuntu22.04部署容器化GLPI 10.0.6
GLPI 10系列升级至GLPI 11的流程思路
1、查看GLPI 11的部署对PHP、Apache、Mysql或者MarinaDB的版本要求。
2、备份GLPI 10的config、file、plugins目录,如果更新失败,还可以及时回滚版本。
3、备份MySQL 5.7的glpi库,如果更新失败,还可以及时回滚版本。
4、升级MySQL 5.7数据库,升级至Mysql 8.0版本。
5、先升级GLPI 10.0.x至GLPI 10.0.23,再升级至GLPI 11.0.x版本。
1、备份数据库的数据文件
先停止my-glpi容器的运行,防止在备份数据时,有数据写入。
sudo docker stop my-glpi
使用mysqldump备份glpi库,备份至容器里的/var/lib/mysql目录。
备份时使用mysql的root用户去备份,root用户的密码:123456
sudo docker exec -it glpi-db sh -c 'mysqldump -uroot -p123456 --single-transaction --routines --events --triggers --databases glpi > /var/lib/mysql/glpi_backup.sql'
参数解析:
–single-transaction:对于 InnoDB 表,使用事务确保备份一致性,且不锁表(不影响业务)。
–routines:备份存储过程和函数。
–events:备份事件调度器中的事件。
–triggers:备份触发器(默认已包含,但显式写上更安全)。
–databases glpi:明确指定备份的数据库,恢复时会在 SQL 中包含 CREATE DATABASE 语句(如果不加该选项,则默认不会创建库,需手动创建)。
因为我们对mysql容器的/var/lib/mysql目录做了数据持久化,映射到了物理机的/usr/local/glpi/mysql/data/目录,在备份完成后,在该目录下就可以查看我们备份好的glpi_backup.sql文件。
ls /usr/local/glpi/mysql/data/

停止glpi-db容器的运行
sudo docker stop glpi-db
2、备份GLPI的数据文件
主要对/usr/local/glpi/目录进行进行备份
sudo cp -rf /usr/local/glpi/ /usr/local/glpi_10
3、升级Mysql 5.7至Mysql 8.0
创建glpi-db:11应用镜像构建目录
sudo mkdir -p /opt/build-glpi-db && cd /opt/build-glpi-db
sudo cp -rf /usr/local/glpi_10/mysql/data/glpi_backup.sql .
前面已经备份好了数据库文件,所以我们直接使用Mysql:8.0制作glpi-db应用镜像。
cat <<EOF>Dockerfile
# 基础镜像,使用 MySQL 作为基础
FROM mysql:8.0
# 将 .sql 文件复制到容器中的特定路径
COPY glpi_backup.sql /docker-entrypoint-initdb.d/
# 设置环境变量,根据需要配置数据库用户和密码
ENV MYSQL_ROOT_PASSWORD=rootP@ssw0rd
ENV MYSQL_DATABASE=glpi
# 暴露 MySQL 默认端口
EXPOSE 3306
EOF
构建glpi-db镜像
sudo docker build -t glpi-db:11 .
构建成功截图
查看镜像
sudo docker images

4、升级GLPI 10.0.x 至GLPI 10.0.23
为什么GLPI 10.0.x不能直接升级到GLPI 11.0.x?
核心原因是为了确保数据库结构和数据的平滑、安全过渡。这通常是由于在 10.0.6 到 10.0.23 之间的某个版本中,数据库发生了重大的、基础性的架构变更,这个变更是后续升级到 11.x 系列的必要前提。
创建my-glpi:10.0.23应用镜像构建目录
sudo mkdir -p /opt/build-glpi-10-23 && cd /opt/build-glpi-10-23
4.1、创建glpi.conf
配置Apache虚拟主机,使得Apache能够正确服务于GLPI应用程序,Apache将从这个/var/www/html/publi目录开始寻找文件来响应请求。
sudo cat <<EOF> glpi.conf
<VirtualHost *:80>
# 核心修改:将根目录指向 /public 子目录
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
# 确保所有请求都路由到 index.php (符合GLPI要求)
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\$ index.php [QSA,L]
</IfModule>
</Directory>
ErrorLog \${APACHE_LOG_DIR}/error.log
CustomLog \${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
EOF
4.2、创建docker-entrypoint.sh
在Docker容器启动时运行,用于执行一些初始化操作,然后启动主进程。
sudo cat <<EOF> docker-entrypoint.sh
#!/bin/bash
# 等待数据库就绪的函数
wait_for_database() {
local host="\$1"
local port="\${2:-3306}"
local timeout=30
local counter=0
echo "等待数据库连接: \$host:\$port"
while [ \$counter -lt \$timeout ]; do
# 使用 bash 内置的 TCP 检查
if timeout 1 bash -c "echo > /dev/tcp/\$host/\$port" 2>/dev/null; then
echo "数据库已就绪"
return 0
fi
echo "等待数据库... (\$((counter + 1))/\$timeout)"
sleep 2
counter=\$((counter + 1))
done
echo "错误: 数据库连接超时"
return 1
}
# 主程序
if [ -n "\$DB_HOST" ]; then
wait_for_database "\$DB_HOST" "\${DB_PORT:-3306}"
fi
# 设置文件权限
chown -R www-data:www-data /var/www/html
chmod -R 755 /var/www/html
# 检查是否首次运行
if [ ! -f /var/www/html/config/config_db.php ]; then
echo "检测到首次运行,确保插件目录存在..."
mkdir -p /var/www/html/plugins
chown www-data:www-data /var/www/html/plugins
# 如果是首次运行,等待数据库完全初始化
sleep 5
fi
# 执行原始命令
exec "\$@"
EOF
4.3、编写Dockerfile
在构建镜像的过程中,如果拉取Github上GLPI的源码失败,可以通过科学的方式去Github上下载源码到本地,然后上传至服务器/opt/build-glpi-10-23目录并对Dockerfile进行部分修改即可。
源码地址:
https://github.com/glpi-project/glpi/releases/download/10.0.23/glpi-10.0.23.tgz
修改前:
ENV GLPI_VERSION=10.0.23
ENV GLPI_FILE=glpi-${GLPI_VERSION}.tgz
RUN wget -O "/tmp/${GLPI_FILE}" \
"https://github.com/glpi-project/glpi/releases/download/${GLPI_VERSION}/${GLPI_FILE}" \
&& tar -xzf "/tmp/${GLPI_FILE}" -C /var/www/html --strip-components=1 \
&& rm -f "/tmp/${GLPI_FILE}"
修改后:
ENV GLPI_VERSION=10.0.23
ENV GLPI_FILE=glpi-${GLPI_VERSION}.tgz
COPY ./${GLPI_FILE} /tmp/${GLPI_FILE} # 新增语句
RUN tar -xzf "/tmp/${GLPI_FILE}" -C /var/www/html --strip-components=1 \
&& rm -f "/tmp/${GLPI_FILE}"

编写Dockerfile
sudo cat <<EOF> Dockerfile
FROM php:8.2-apache
# 设置时区
ENV TZ=Asia/Shanghai
ENV PHP_INI_DATE_TIMEZONE=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/\$TZ /etc/localtime && echo \$TZ > /etc/timezone
# 安装系统依赖
RUN apt-get update && apt-get install -y \
libpng-dev libjpeg-dev libfreetype6-dev \
libxml2-dev libldap2-dev libicu-dev \
libzip-dev libcurl4-openssl-dev libonig-dev \
libxslt1-dev unzip wget curl cron nano \
&& rm -rf /var/lib/apt/lists/*
# 配置 PHP 扩展
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/
# 安装 PHP 扩展
RUN docker-php-ext-install \
pdo_mysql mysqli gd intl ldap zip xml xsl mbstring \
curl soap sockets opcache bcmath bz2
# 安装和配置 APCu
RUN pecl install apcu && docker-php-ext-enable apcu
# 设置 PHP 时区
RUN echo "date.timezone = Asia/Shanghai" > /usr/local/etc/php/conf.d/timezone.ini
# 启用 Apache 模块
RUN a2enmod rewrite
RUN a2enmod headers
# 下载 GLPI
ENV GLPI_VERSION=10.0.23
ENV GLPI_FILE=glpi-\${GLPI_VERSION}.tgz
RUN wget -O "/tmp/\${GLPI_FILE}" \
"https://github.com/glpi-project/glpi/releases/download/\${GLPI_VERSION}/\${GLPI_FILE}" \
&& tar -xzf "/tmp/\${GLPI_FILE}" -C /var/www/html --strip-components=1 \
&& rm -f "/tmp/\${GLPI_FILE}"
COPY glpi.conf /etc/apache2/sites-available/000-default.conf
# 创建必要的目录
RUN mkdir -p /var/www/html/files/_cache /var/www/html/files/_cron \
/var/www/html/files/_dumps /var/www/html/files/_graphs \
/var/www/html/files/_lock /var/www/html/files/_pictures \
/var/www/html/files/_plugins /var/www/html/files/_rss \
/var/www/html/files/_tmp /var/www/html/files/_uploads \
/var/www/html/files/_sessions
# 设置权限
RUN chown -R www-data:www-data /var/www/html \
&& chmod -R 755 /var/www/html
# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost/ || exit 1
# 启动脚本 - 处理首次安装配置
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
EXPOSE 80
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["apache2-foreground"]
EOF
4.4、构建镜像
构建GLPI 10.0.23应用镜像
sudo docker build -t my-glpi:10.0.23 .
构建的过程大概需要十几分钟,没有报错就是构建成功。
4.5、编排容器
创建docker-compose.yaml,将 Docker 容器内的数据持久化存储到宿主机的指定目录,避免容器重启或删除容器时数据丢失。
sudo cat <<EOF> docker-compose.yaml
services:
glpi-db:
image: glpi-db:11
container_name: glpi-db
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: glpi
MYSQL_USER: glpi
MYSQL_PASSWORD: glpi@123
MYSQL_ROOT_HOST: '%'
TZ: Asia/Shanghai
MYSQL_DEFAULT_AUTHENTICATION_PLUGIN: mysql_native_password
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --innodb-buffer-pool-size=512M
- --sql-mode=NO_ENGINE_SUBSTITUTION
- --default-authentication-plugin=mysql_native_password
volumes:
- glpi_db_data:/var/lib/mysql
networks:
- glpi-network
restart: unless-stopped
my-glpi:
image: my-glpi:10.0.23
container_name: my-glpi
environment:
- TIMEZONE=Asia/Shanghai
- DB_HOST=glpi-db
- DB_NAME=glpi
- DB_USER=glpi
- DB_PASSWORD=glpi@123
volumes:
- glpi_files_data:/var/www/html/files
- glpi_plugins_data:/var/www/html/plugins
- glpi_config_data:/var/www/html/config
ports:
- "80:80"
networks:
- glpi-network
depends_on:
- glpi-db
restart: unless-stopped
volumes:
glpi_db_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/mysql8/data
glpi_files_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/glpi_files_data
glpi_plugins_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/glpi_plugins_data
glpi_config_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/glpi_config_data
networks:
glpi-network:
name: glpi-network
driver: bridge
EOF
4.6、数据目录处理
由于这次启动需要启用glpi-db:11容器,需要将/usr/local/glpi/目录下的mysql目录重名为mysql_old,重新生成持久化数据库数据目录。
sudo mv /usr/local/glpi/mysql /usr/local/glpi/mysql_old
/usr/local/glpi/目录下的glpi_config_data、glpi_files_data、glpi_plugins_data还可以继续沿用,不需要进行更改。创建/usr/local/glpi/mysql8/data空目录。
sudo mkdir -p /usr/local/glpi/mysql8/data
4.7、编排容器
创建docker-compose.yaml,将 Docker 容器内的数据持久化存储到宿主机的指定目录,避免容器重启或删除容器时数据丢失。GLPI使用的数据库身份认证插件为 mysql_native_password,而 MySQL 8.0 默认采用 caching_sha2_password 插件。若直接升级而不调整认证方式,会导致数据库升级失败。
sudo cat <<EOF> docker-compose.yaml
services:
glpi-db:
image: glpi-db:11
container_name: glpi-db
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: glpi
MYSQL_USER: glpi
MYSQL_PASSWORD: glpi@123
MYSQL_ROOT_HOST: '%'
TZ: Asia/Shanghai
MYSQL_DEFAULT_AUTHENTICATION_PLUGIN: mysql_native_password
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --innodb-buffer-pool-size=512M
- --sql-mode=NO_ENGINE_SUBSTITUTION
- --default-authentication-plugin=mysql_native_password
volumes:
- glpi_db_data:/var/lib/mysql
networks:
- glpi-network
restart: unless-stopped
my-glpi:
image: my-glpi:10.0.23
container_name: my-glpi
environment:
- TIMEZONE=Asia/Shanghai
- DB_HOST=glpi-db
- DB_NAME=glpi
- DB_USER=glpi
- DB_PASSWORD=glpi@123
volumes:
- glpi_files_data:/var/www/html/files
- glpi_plugins_data:/var/www/html/plugins
- glpi_config_data:/var/www/html/config
ports:
- "80:80"
networks:
- glpi-network
depends_on:
- glpi-db
restart: unless-stopped
volumes:
glpi_db_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/mysql8/data
glpi_files_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/glpi_files_data
glpi_plugins_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/glpi_plugins_data
glpi_config_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/glpi_config_data
networks:
glpi-network:
name: glpi-network
driver: bridge
EOF
4.8、下线glpi 10.0.x系统
cd /opt/build-glpi
sudo docker compose -f docker-compose.yaml down -v

4.9、上线glpi 10.0.23系统
cd /opt/build-glpi-10-23
sudo docker compose -f docker-compose.yaml up -d

5、访问GLPI Web端进行升级
http://IP
在升级的过程中会有报错,直接忽略。

登陆Web端
用户名:glpi
密码:glpi
登陆进去后,点击【右上角图标】-【关于】,查看版本,看到该版本GLPI 10.0.23即为升级成功!
查看之前部署的Agent端,发现数据没有问题。
6、升级GLPI 10.0.23至GLPI 11
根据 GLPI的官方规划,从GLPI 11版本开始,项目的 Web 入口文件 index.php将会被强制要求放置在public目录下。这个变化主要是为了提升安全性,通过将公开访问的文件与核心代码分离,可以更好地保护应用。以下是 GLPI 11 中 public 目录的核心作用:
| 传统根目录 (如 /var/www/html) | 新的 Web 根目录 (/public) | |
|---|---|---|
| 存放内容 | index.php, config/, src/, vendor/ 等所有代码文件。 |
仅存放公开访问的入口文件(如 index.php)和静态资源(如 CSS、JS、图片等)。 |
| 安全风险 | 配置不当可能导致核心代码被直接访问。 | 核心代码(如 src/, config/)位于 Web 根目录之外,无法被浏览器直接访问,大大提升了安全性。 |
创建my-glpi:11.0.4应用镜像构建目录
sudo mkdir -p /opt/build-glpi-11 && cd /opt/build-glpi-11
6.1、创建glpi.conf
配置Apache虚拟主机,使得Apache能够正确服务于GLPI应用程序,Apache将从这个/var/www/html/publi目录开始寻找文件来响应请求。使用的配置同前面的glpi.conf一致,直接复制过来使用。
sudo cp /opt/build-glpi-10-23/glpi.conf .
6.2、创建docker-entrypoint.sh
在Docker容器启动时运行,用于执行一些初始化操作,然后启动主进程。使用的配置同前面的docker-entrypoint.sh一致,直接复制过来使用。
sudo cp /opt/build-glpi-10-23/docker-entrypoint.sh .
6.3、编写Dockerfile
在构建镜像的过程中,如果拉取Github上GLPI的源码失败,可以通过科学的方式去Github上下载源码到本地,然后上传至服务器/opt/build-glpi-11目录并对Dockerfile进行部分修改即可。
源码地址:
https://github.com/glpi-project/glpi/releases/download/11.0.4/glpi-11.0.4.tgz
修改前:
ENV GLPI_VERSION=11.0.4
ENV GLPI_FILE=glpi-${GLPI_VERSION}.tgz
RUN wget -O "/tmp/${GLPI_FILE}" \
"https://github.com/glpi-project/glpi/releases/download/${GLPI_VERSION}/${GLPI_FILE}" \
&& tar -xzf "/tmp/${GLPI_FILE}" -C /var/www/html --strip-components=1 \
&& rm -f "/tmp/${GLPI_FILE}"
修改后:
ENV GLPI_VERSION=11.0.4
ENV GLPI_FILE=glpi-${GLPI_VERSION}.tgz
COPY ./${GLPI_FILE} /tmp/${GLPI_FILE} # 新增语句
RUN tar -xzf "/tmp/${GLPI_FILE}" -C /var/www/html --strip-components=1 \
&& rm -f "/tmp/${GLPI_FILE}"

编写Dockerfile
sudo cat <<EOF> Dockerfile
FROM php:8.2-apache
# 设置时区
ENV TZ=Asia/Shanghai
ENV PHP_INI_DATE_TIMEZONE=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/\$TZ /etc/localtime && echo \$TZ > /etc/timezone
# 安装系统依赖
RUN apt-get update && apt-get install -y \
libpng-dev libjpeg-dev libfreetype6-dev \
libxml2-dev libldap2-dev libicu-dev \
libzip-dev libcurl4-openssl-dev libonig-dev \
libxslt1-dev unzip wget curl cron nano \
&& rm -rf /var/lib/apt/lists/*
# 配置 PHP 扩展
RUN docker-php-ext-configure gd --with-freetype --with-jpeg
RUN docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/
# 安装 PHP 扩展
RUN docker-php-ext-install \
pdo_mysql mysqli gd intl ldap zip xml xsl mbstring \
curl soap sockets opcache bcmath bz2
# 安装和配置 APCu
RUN pecl install apcu && docker-php-ext-enable apcu
# 设置 PHP 时区
RUN echo "date.timezone = Asia/Shanghai" > /usr/local/etc/php/conf.d/timezone.ini
# 启用 Apache 模块
RUN a2enmod rewrite
RUN a2enmod headers
# 下载 GLPI
ENV GLPI_VERSION=11.0.4
ENV GLPI_FILE=glpi-\${GLPI_VERSION}.tgz
RUN wget -O "/tmp/\${GLPI_FILE}" \
"https://github.com/glpi-project/glpi/releases/download/\${GLPI_VERSION}/\${GLPI_FILE}" \
&& tar -xzf "/tmp/\${GLPI_FILE}" -C /var/www/html --strip-components=1 \
&& rm -f "/tmp/\${GLPI_FILE}"
COPY glpi.conf /etc/apache2/sites-available/000-default.conf
# 创建必要的目录
RUN mkdir -p /var/www/html/files/_cache /var/www/html/files/_cron \
/var/www/html/files/_dumps /var/www/html/files/_graphs \
/var/www/html/files/_lock /var/www/html/files/_pictures \
/var/www/html/files/_plugins /var/www/html/files/_rss \
/var/www/html/files/_tmp /var/www/html/files/_uploads \
/var/www/html/files/_sessions
# 设置权限
RUN chown -R www-data:www-data /var/www/html \
&& chmod -R 755 /var/www/html
# 健康检查
HEALTHCHECK --interval=30s --timeout=3s --start-period=5s --retries=3 \
CMD curl -f http://localhost/ || exit 1
# 启动脚本 - 处理首次安装配置
COPY docker-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/docker-entrypoint.sh
EXPOSE 80
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["apache2-foreground"]
EOF
5.4、构建镜像
sudo docker build -t my-glpi:11.0.4 .
构建的过程大概需要十几分钟…
镜像构建完成后,查看镜像的情况
sudo docker images

6.5、编排容器
创建docker-compose.yaml,将 Docker 容器内的数据持久化存储到宿主机的指定目录,避免容器重启或删除容器时数据丢失。
sudo cat <<EOF> docker-compose.yaml
services:
glpi-db:
image: glpi-db:11
container_name: glpi-db
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: glpi
MYSQL_USER: glpi
MYSQL_PASSWORD: glpi@123
MYSQL_ROOT_HOST: '%'
TZ: Asia/Shanghai
MYSQL_DEFAULT_AUTHENTICATION_PLUGIN: mysql_native_password
command:
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_unicode_ci
- --innodb-buffer-pool-size=512M
- --sql-mode=NO_ENGINE_SUBSTITUTION
- --default-authentication-plugin=mysql_native_password
volumes:
- glpi_db_data:/var/lib/mysql
networks:
- glpi-network
restart: unless-stopped
my-glpi:
image: my-glpi:11.0.4
container_name: my-glpi
environment:
- TIMEZONE=Asia/Shanghai
- DB_HOST=glpi-db
- DB_NAME=glpi
- DB_USER=glpi
- DB_PASSWORD=glpi@123
volumes:
- glpi_files_data:/var/www/html/files
- glpi_plugins_data:/var/www/html/plugins
- glpi_config_data:/var/www/html/config
ports:
- "80:80"
networks:
- glpi-network
depends_on:
- glpi-db
restart: unless-stopped
volumes:
glpi_db_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/mysql8/data
glpi_files_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/glpi_files_data
glpi_plugins_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/glpi_plugins_data
glpi_config_data:
driver: local
driver_opts:
type: none
o: bind
device: /usr/local/glpi/glpi_config_data
networks:
glpi-network:
name: glpi-network
driver: bridge
EOF
6.6、下线glpi 10.0.23 系统
cd /opt/build-glpi-10-23
sudo docker compose down -v

对/usr/local/glpi目录进行备份
sudo cp -rf /usr/local/glpi /usr/local/glpi_10_23
6.7、上线 glpi 11.0.04 系统
cd /opt/build-glpi-11
sudo docker compose up -d

7、访问GLPI Web端进行升级
http://IP


等待数据库更新完成,点击【继续】
又见到了我们熟悉的界面,账号/密码依旧是 glpi
登陆上去后查看我们的版本信息,显示11.0.4字样,我们就升级完成了,后续的升级以此类推,可以给自己一些掌声了,坚持到了这一步,并没有放弃!
8、总结
GLPI的升级花费了我很多的时间,从0-1的构建镜像到部署成功以及系统升级,经历了一次又一次的报错,每一次报错并解决都是经验的增长,在一次又一次的报错中,逐渐理解系统的架构,项目部署的细节,以及MySQL 5.7升级至MySQL 8.0的过程中需要注意的点。部署项目的过程中遇到问题是常事,解决问题的思路和发散的思维才是最大的收获。
更多推荐
所有评论(0)