You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器内php.ini文件夹无法删除的问题求助

Bitnami PHP-FPM镜像php.ini构建时不可见问题的解决方法

问题场景

尝试通过Dockerfile删除Bitnami PHP-FPM容器中的/opt/bitnami/php/lib/php.ini文件,Dockerfile内容如下:

FROM bitnami/php-fpm:latest 
RUN rm -rf /opt/bitnami/php/lib/php.ini
RUN ls /opt/bitnami/php/lib

执行构建命令:

sudo docker build --no-cache --progress=plain .

输出中看不到php.ini文件,即使去掉rm -rf步骤也一样,仿佛镜像里根本不存在这个文件。但通过docker-compose启动容器后,执行:

sudo docker exec php-fpm ls /opt/bitnami/php/lib

却能看到php.ini文件。

所用docker-compose.yml中PHP服务配置:

php:
  build: .
  container_name: php-fpm
  hostname: php-fpm
  depends_on:
    - mysql
  environment:
    - "ENV_SUBSTITUTION_ENABLE=true"
    - "PHP_MEMORY_LIMIT=512M"
    - "PHP_FPM_LISTEN=9000"
    - "PHP_SESSION_GC_MAXLIFETIME=7200"
  volumes:
    - ./projmain:/var/www/proj:rw

原因分析

Bitnami官方镜像的配置文件(包括php.ini)并非直接打包在镜像的文件系统中,而是由容器启动时的初始化脚本根据环境变量和模板生成的:

  • 构建阶段的RUN命令是在镜像层执行,此时初始化脚本还未运行,自然看不到php.ini文件;
  • 容器启动后,镜像的entrypoint脚本会执行配置生成逻辑,将php.ini写入/opt/bitnami/php/lib路径,所以此时能看到文件。

解决方案

方案1:容器启动时删除文件

在docker-compose的PHP服务中修改command,先删除文件再启动PHP-FPM:

php:
  # 其他配置不变
  command: sh -c "rm -rf /opt/bitnami/php/lib/php.ini && /opt/bitnami/scripts/php-fpm/run.sh"

方案2:挂载自定义配置覆盖(如需替换而非删除)

如果是要替换默认php.ini而非删除,可直接挂载本地自定义文件:

php:
  # 其他配置不变
  volumes:
    - ./projmain:/var/www/proj:rw
    - ./custom/php.ini:/opt/bitnami/php/lib/php.ini:ro

方案3:自定义Entrypoint脚本

编写自定义entrypoint脚本(比如custom-entrypoint.sh):

#!/bin/sh
rm -rf /opt/bitnami/php/lib/php.ini
exec /opt/bitnami/scripts/php-fpm/run.sh

然后在Dockerfile中添加:

FROM bitnami/php-fpm:latest
COPY custom-entrypoint.sh /usr/local/bin/
RUN chmod +x /usr/local/bin/custom-entrypoint.sh
ENTRYPOINT ["custom-entrypoint.sh"]

内容的提问来源于stack exchange,提问作者Roman2903

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 13:55:22