【问题标题】:how to set max_execution_time php-fpm docker image?如何设置 max_execution_time php-fpm docker 镜像?
【发布时间】:2017-01-10 14:17:46
【问题描述】:

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

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

现在我想更改 max_execution_time php 变量。如何在自定义 docker 映像中做到这一点?

【问题讨论】:

  • 假设你使用的是apache2,路径为php/arache2/php.ini
  • 你的做法和往常一样。 Docker 没有什么神奇之处。另外,您是否将主机文件系统与容器文件系统混淆了? php.ini 文件在容器中,而不是主机文件系统中。
  • docker 旨在轻松且经常地重新构建,编辑您的 Dockerfile,进行修改,再次构建并运行它
  • @GordonM 我已经使用 docker exec -it containerId /bin/bash 检查了正在运行的容器的文件系统,它没有在 /usr/local/etc/php 中显示任何 php.ini
  • @KrisRoofe 我正在使用 php docker 映像的 php-fpm 变体,并使用另一个 nginx 容器作为反向代理

标签: php docker dockerfile fastcgi fpm


【解决方案1】:

你所做的是,你从官方的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 可以只更改几个值

【讨论】:

    【解决方案2】:

    在 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
    

    【讨论】:

      【解决方案3】:

      简单的解决方案:

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

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

      我使用php:7.4.12-apacheimage作为起点,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
      
              ...
      
      

      此配置的 php.ini 与 docker-compose.yml 位于同一文件夹中

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

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

      编码愉快!

      【讨论】:

        猜你喜欢
        • 2018-03-31
        • 1970-01-01
        • 2019-03-17
        • 1970-01-01
        • 2022-10-15
        • 2016-09-01
        • 2019-03-03
        • 2017-10-03
        • 2021-04-05
        相关资源
        最近更新 更多