#php #docker
#php #докер
Вопрос:
Я использую Dockerfile для создания образа php, но по умолчанию PHP не имеет файла php.ini. Поэтому мне нужно его создать. Теперь у меня есть три способа сделать это:
- используйте команду RUN в Dockerfile
RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini
. Но этот способ по-прежнему использует настройку по умолчанию, я не могу ее отредактировать (или отредактировать и зафиксировать контейнер). - используйте команду КОПИРОВАНИЯ в Dockerfile
COPY php.ini /usr/local/etc/php/php.ini
. Хорошо, теперь я могу отредактировать конфигурацию, а затем создать образ, но если мне нужно изменить какие-то настройки, мне нужно перестроить образ - используйте аргументы volumn, добавьте это в docker-compose.yml
- $PWD/php/conf.d:/usr/local/etc/php/conf.d/my_config
. Таким образом, я могу редактировать php.ini в любое время и просто перезагрузить конфигурационный файл. Но, как мне кажется, лучший способ — это- $PWD/php/conf.d:/usr/local/etc/php/conf.d
. первый способ создаст новую подпапку в контейнере docker, второй способ удалит файл * .ini, который изначально находился в папке
Я хочу знать, есть ли здесь какой-то способ, который мог бы монтировать volumn и не удалять файл в контейнере (второй способ из 3, но не удалять файл)
Комментарии:
1. Вы должны иметь возможность использовать тот же синтаксис монтирования тома для монтирования одного файла.
2. @DavidMaze Я забыл этот способ, чтобы просто монтировать файл. Теперь это работает. Спасибо за напоминание
Ответ №1:
На самом деле файлы не deleted
из вложенной папки. Том монтируется поверх него.
Что вы можете сделать, так это назначить отдельную папку для ваших *.ini
файлов и ссылаться на нее из основного php.ini
файла. Поэтому каждый раз, когда вы перезагружаете php, он переходит в php.ini
выделенную папку конфигурации и загружает оттуда все *.ini
файлы.