docker монтирует volumns, но сохраняет файлы внутри контейнера docker

#php #docker

#php #докер

Вопрос:

Я использую Dockerfile для создания образа php, но по умолчанию PHP не имеет файла php.ini. Поэтому мне нужно его создать. Теперь у меня есть три способа сделать это:

  1. используйте команду RUN в Dockerfile RUN cp /usr/local/etc/php/php.ini-production /usr/local/etc/php/php.ini . Но этот способ по-прежнему использует настройку по умолчанию, я не могу ее отредактировать (или отредактировать и зафиксировать контейнер).
  2. используйте команду КОПИРОВАНИЯ в Dockerfile COPY php.ini /usr/local/etc/php/php.ini . Хорошо, теперь я могу отредактировать конфигурацию, а затем создать образ, но если мне нужно изменить какие-то настройки, мне нужно перестроить образ
  3. используйте аргументы 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 файлы.