Я запускаю разные экземпляры программного обеспечения PHP, используя Docker. Каждый экземпляр имеет свой собственный контейнер базы данных, контейнер приложения, файл docker-compose и т. Д. (Без роя, kubernetes или какой-либо другой оркестровки).
Там есть настройки, которые я должен включить в /usr/local/etc/php/conf.d/
. Мне нужно изменить содержимое файла и добавить другой файл.
Вот как я сейчас достигаю этого в docker-compose:
volumes:
- "./conf/disable-opcache.ini:/usr/local/etc/php/conf.d/opcache-recommended.ini:z"
- "./conf/custom.ini:/usr/local/etc/php/conf.d/custom.ini:z"
Это работает, но заставляет меня иметь копии обоих файлов для каждого экземпляра приложения. Когда я хочу внести изменения, мне нужно реплицировать их на каждый экземпляр.
Я хочу иметь простой, переносимый, воспроизводимый способ размещения этих настроек на нескольких экземплярах этих контейнеров.
Я прочитал этот ответ , и то, что я сейчас делаю, это в основном их вариант (а), но у него есть все недостатки, которые я упомянул. Я не могу использовать опцию (b), потому что нет поддержки для изображений, которые я использую - по крайней мере, не для всех пользовательских конфигураций, которые мне нужны; тогда как для варианта (c) мне нужно было бы создать собственное производное изображение для каждой версии / тега каждого изображения, которое мы используем.
Я пытался создать образ, содержащий только файлы конфигурации, и добавить его в качестве тома. Он работает, если том является папкой, но затем «перезаписывает» исходную папку, и присутствуют только эти 2 пользовательских файла, тогда как мне нужны и другие оригинальные файлы в папке.
Если я попытаюсь использовать один файл в качестве тома, он не будет работать.
Думаю, я мог бы поместить все файлы в томе в новое изображение, а затем создать символическую ссылку на контейнеры для каждого файла. Но я не уверен, как бы я создал эти символические ссылки на контейнерах.
Вероятно, есть лучший способ продолжить, но я, к сожалению, застрял.