Как я могу переопределить php-fpm.conf или pool.d/www.conf ddev?

Нет очевидного способа переопределить некоторую конфигурацию php-fpm в веб-контейнере DDEV-Local. Хотя легко предоставить пользовательская конфигурация PHP не так очевидно, как настроить сам процесс php-fpm.

В моем случае я хочу изменить значение security.limit-extensions в pool.d/www.conf.


person rfay    schedule 12.01.2021    source источник


Ответы (2)


Есть два способа сделать это. Я создам два отдельных ответа, чтобы объяснить, как это сделать.

Первый метод заключается в создании собственного файла Dockerfile (docs), который редактирует www.conf (или любой другой файл). Вы также можете использовать команду Dockerfile ADD, чтобы добавить полный файл и переопределить их.

В случае этой конкретной проблемы мы создадим файл .ddev/web-build/Dockerfile со следующим содержимым:

# You can copy this Dockerfile.example to Dockerfile to add configuration
# or packages or anything else to your webimage
ARG BASE_IMAGE
FROM $BASE_IMAGE
ENV PHP_VERSION=7.4
RUN echo "security.limit_extensions = .php .html" >> /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf

После ddev start у вас будет новая конфигурация.

Вместо подхода RUN echo, который просто добавляется к файлу, приведенного здесь для простоты, вы можете RUN использовать оператор sed/awk/perl для изменения файла на месте.

В качестве альтернативы вы можете поместить нужную версию www.conf в каталог .ddev/web-build и

COPY www.conf /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf
person rfay    schedule 12.01.2021

Второй способ — использовать собственный файл docker-compose.*.yaml (документы.

Здесь вы скопируете нужный файл www.conf (или любой другой файл) в каталог .ddev вашего проекта, а затем смонтируете его в веб-контейнер поверх ранее предоставленного. Для этого конкретного примера вы можете скопировать www.conf в папку .ddev с помощью cd .ddev && docker cp ddev-<projectname>-web:/etc/php/7.4/fpm/pool.d/www.conf . и отредактировать его по своему усмотрению (отредактируйте его с помощью security.limit_extensions = .php .html).

Затем пользовательский файл .ddev/docker-compose.*.yaml, подобный этому, может смонтировать его в нужный каталог (мой называется docker-compose.wwwconf.yaml):

version: "3.6"
services:
  web:
    volumes:
    - "./www.conf:/etc/php/7.4/fpm/pool.d/www.conf"
person rfay    schedule 12.01.2021