我正在使用来自https://hub.docker.com/_/php/的 php5.6-fpm 的 docker 映像。
当我检查 phpinfo() 中的 php.ini 位置时,它说它是 /usr/local/etc/php,但是当我查看该路径时,那里没有 php.ini。
现在我想更改 max_execution_time php 变量。如何在自定义 docker 映像中做到这一点?
我正在使用来自https://hub.docker.com/_/php/的 php5.6-fpm 的 docker 映像。
当我检查 phpinfo() 中的 php.ini 位置时,它说它是 /usr/local/etc/php,但是当我查看该路径时,那里没有 php.ini。
现在我想更改 max_execution_time php 变量。如何在自定义 docker 映像中做到这一点?
您所做的是,您从官方 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 更改几个值
将以下行添加到 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
简单的解决方案:
导航您的 docker 映像并找到最适合您的需求的配置php.ini-development
和php.ini-production
(第一个可能更多用于日志记录,第二个用于类似生产的环境。)。
将配置文件复制到您的项目文件夹中,或者您保存Dockerfile
或的位置docker-compose.yml
我以php:7.4.12-apache
图像为起点,必须将 php.ini 文件复制到/usr/local/etc/php/
中,下次启动时会自动加载。
现在将您需要的任何属性编辑到配置文件中,并将其另存为php.ini
最后,必须将文件复制到图像/容器中,请参阅以下几行。
添加COPY ./php.ini /usr/local/etc/php/php.ini
或者
services:
php-apache-dev:
...
volumes:
- ./php.ini:/usr/local/etc/php/php.ini
...
此配置的 php.ini 与 docker-compose.yml 位于同一文件夹中
注意:老实说,我更喜欢复制到容器中,因为我可以编辑配置并简单地重新启动容器,而无需重建映像,但这取决于你。
我发现这个解决方案在开发中更有用,它更简单,并且您可以编辑许多属性,而不仅仅是一个。
快乐编码!