如何在含Apache的Docker镜像中安装php-cli适配GLPI
构建含Apache与PHP-CLI的GLPI自定义Docker镜像
核心说明
php:8.3.2-apache-bookworm基础镜像已默认包含PHP-CLI,无需单独安装完整的php-cli包。若你发现CLI缺失或需补充相关依赖,可在系统包安装步骤中添加php-cli以确保完整性。以下是优化后的Dockerfile,同时确保Apache服务、GLPI所需PHP扩展与PHP-CLI环境一致:
优化后的Dockerfile
FROM php:8.3.2-apache-bookworm # 定义环境变量 ARG DEBIAN_FRONTEND=noninteractive ENV TZ=America/Sao_Paulo \ LANG=pt_BR.utf8 \ LANGUAGE=pt_BR:pt \ LC_ALL=pt_BR.UTF-8 # 配置时区与本地化 RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone \ && apt-get update && apt-get install -y locales && localedef -i pt_BR -c -f UTF-8 -A /usr/share/locale/locale.alias $LC_ALL # 安装系统工具与PHP-CLI(若基础镜像缺失则补充) RUN apt-get install -y wget nano iproute2 iputils-ping php-cli # 安装PHP扩展依赖库 RUN apt-get install -y libxml2-dev libc-client-dev libkrb5-dev libldap2-dev libcurl4-openssl-dev \ libsnmp-dev libzip-dev libpng-dev libonig-dev libbz2-dev libjpeg-dev libfreetype6-dev # 编译安装PHP扩展 RUN docker-php-ext-configure imap --with-kerberos --with-imap-ssl \ && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu/ \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ && docker-php-ext-install bz2 curl exif gd ldap imap intl mbstring mysqli opcache soap snmp xml zip # 通过PECL安装扩展并启用 RUN pecl install apcu xmlrpc-1.0.0RC3 \ && docker-php-ext-enable apcu xmlrpc # 下载并部署GLPI RUN wget -O- https://github.com/glpi-project/glpi/releases/download/10.0.11/glpi-10.0.11.tgz | tar -zxv --strip-components=1 -C /var/www/html/ \ && chown www-data:www-data -R /var/www/html \ && find /var/www/html -type d -exec chmod 755 {} \; \ && find /var/www/html -type f -exec chmod 644 {} \; \ && apt-get purge -y wget # 配置Apache站点与模块 COPY glpi.conf /etc/apache2/sites-available/glpi.conf RUN a2dissite 000-default.conf \ && a2ensite glpi.conf \ && a2enmod rewrite headers # 清理系统缓存 RUN apt-get clean \ && apt-get autoremove \ && rm -rf /var/lib/apt/lists/* # 切换运行用户 USER www-data
关键修改点
- PHP-CLI保障:在系统包安装步骤中添加
php-cli,确保即使基础镜像存在异常,CLI环境也能正常可用 - 层优化:合并PECL安装命令,减少镜像构建层数,提升构建效率与镜像体积控制
- 一致性确保:所有PHP扩展(包括通过docker-php-ext与PECL安装的)会同时作用于Apache的mod_php环境与PHP-CLI环境,无需单独配置CLI的扩展
内容的提问来源于stack exchange,提问作者campos
相关产品推荐
相关产品推荐

