Правки в php.ini в docker образе php при помощи docker-compose

Способ добавления дополнительных php.ini файлов всего двумя строчками в docker-compose.yml.

Обычная практика для небольших проектов — использовать образы из dockerhub библиотеки без особых доработок. Иногда нужно внести некоторые настройки в php.ini в контейнере, например, увеличить значение параметра upload_max_filesize. Описание к официальному образу php на dockerhub предлагают такой подход: построить новый образ на основе официального и подменить там php.ini. Если нет нужды в постройке отдельного образа по другим причинам, это оверкилл. Также можно примонтировать всю папку с php.ini, что также не всегда удобно, кроме того пришлось бы таскать в репозитории кучку файлов для плагинов.

Вот альтернативный подход, добавляющий ещё одну папку, которую подхватит php и подключит новые файлы, не затрагивая остальные настройки. Просто добавьте следующие строчки в соответствующие секции docker-compose.yml:

1
2
3
4
5
6
services:
  php
:
    volumes
:
     - ./php-ini:/usr/local/etc/php/custom.d
    environment
:
      PHP_INI_SCAN_DIR
: "/usr/local/etc/php/custom.d:/usr/local/etc/php/conf.d"

Добавьте ваш новый php.ini в папку php-ini рядом с docker-compose.yml. Директория будет просканирована после оригинальных php.ini и перед файлами conf.d. Таким образом можно добавить или переопределить оригинальные настройки в файле, контролируемом вашей системой версий.

Здесь мы используем тот факт, что PHP_INI_SCAN_DIR может содержать список директорий, разделённых двоеточием. Часть с `/usr/local/etc/php/conf.d` из оригинального образа и соответствует настройкам по умолчанию из оригинального образа. Если что — проверьте ваш образ, запустив `docker-compose run —rm php php —ini | grep additional` и заменив значение на соответствующее из вашего контейнера. Также, если надо что-то доопределить после conf.d, просто добавьте ещё одну директорию используя эту технику.

Вот и всё, ребята )