如何设置max_execution_time php-fpm docker image?

时间:2017-01-10 14:17:46

标签: php docker dockerfile fastcgi fpm

我正在使用来自https://hub.docker.com/_/php/的php5.6-fpm的docker image。

当我检查phpinfo()中的php.ini位置时,它说它是/ usr / local / etc / php,但是当我查看那条路径时,那里没有php.ini。

现在我要更改max_execution_time php变量。如何在自定义泊坞窗映像中执行此操作?

3 个答案:

答案 0 :(得分:4)

您所做的是,您从官方FPM图像派生,然后使用RUN + sed更改值,例如:

FROM php:7.1

RUN sed -e 's/max_execution_time = 30/max_execution_time = 100/' -i /etc/php/7.1/fpm/php.ini

请确保路径/etc/php/7.1/fpm/php.ini在您的情况下是正确的,这取决于使用的图像,我没有在php:7.1之上验证。

提示:当您需要更改很多值时,您可能更愿意在图像中使用自己的php.ini

COPY php.ini /etc/php/7.1/fpm/php.ini

但是,以防万一,只需更改几个值就可以用sed

完成

答案 1 :(得分:1)

将以下行添加到Dockerfile

RUN echo 'max_execution_time = 120' >> /usr/local/etc/php/conf.d/docker-php-maxexectime.ini;

然后

docker-compose build 
docker-compose up

docker build 
docker start your_machine_name

提供的PHP_INI_SCAN_DIR = /usr/local/etc/php/conf.d。 您可以在运行中检查

<? phpinfo();

应该说

Scan this dir for additional .ini files | /usr/local/etc/php/conf.d

答案 2 :(得分:0)

简单的解决方案:

  1. 导航您的 docker 映像并在 php.ini-developmentphp.ini-production 之间找到最适合您需求的配置(第一个可能更适合用于日志记录,第二个用于类似生产的环境。 ).

  2. 复制项目文件夹中的配置文件,或者复制 Dockerfiledocker-compose.yml 的位置

我使用 php:7.4.12-apache 图像作为起点,php.ini 文件必须复制到 /usr/local/etc/php/ 中,它会在下次启动时自动加载。

  1. 现在将您需要的任何属性编辑到配置文件中,并将其保存为 php.ini

  2. 最后,必须将文件复制到镜像/容器中,请参阅以下几行。

Dockerfile(复制到镜像中)

添加COPY ./php.ini /usr/local/etc/php/php.ini

docker-compose.yml(复制到容器中)

services:
    php-apache-dev:

        ...

        volumes:
            - ./php.ini:/usr/local/etc/php/php.ini

        ...

此配置在与 docker-compose.yml 相同的文件夹中包含 php.ini

注意:老实说,我更喜欢复制到容器中,因为我可以编辑配置并简单地重新启动容器,而无需重建映像,但这取决于您。

我发现这个解决方案在开发中更有用,它更简单,您可以编辑许多属性,而不仅仅是一个。

快乐编码!