В моем файле компоновки докеров я указываю две службы: phpant (настраиваемый образ, полученный из debian со скомпилированным PHP и запущенным postfix, чтобы PHP действительно мог отправлять электронные письма) и службу mysqldb, которая извлекает последнюю версию из концентратора докеров.
В сервисе phpant я определяю объем:
volumes:
- "/var/www/html/config/"
После установки в эту папку записываем файлы конфигурации. Мы используем том, потому что хотим, чтобы данные конфигурации сохранялись, даже если мы развернем новый / обновленный образ.
Однако, когда мы отправляем новое изображение, оно теряет файлы конфигурации, и этот каталог оказывается пустым.
Что я сделал не так? Как сохранить объем данных даже после обновления образа докера для этой службы?
Заметка: Изображение Wordpress, похоже, делает это правильно, и именно здесь я впервые получил эту идею. Я пытался подражать тому, что они сделали, но очевидно, что пропустил / пропустил шаг.
Вы указали только путь в контейнере для вашего тома. В этой конфигурации Docker создает новый том каждый раз при воссоздании контейнера.
Если вы хотите, чтобы данные тома были постоянными, вам необходимо указать путь, доступный для хоста контейнера, где могут храниться данные тома. Например, относительно вашего docker-compose.yml
:
volumes:
- ./config:/var/www/html/config
Увидеть документация для получения дополнительных способов настройки томов.