@krll-k

Как сохранить свои изменения во взятом Docker-образе для последующего повторного использования?

Я беру образ https://hub.docker.com/r/lluisyast/freepbx/, деплою, настраиваю, все работает, радуюсь. Как правильно теперь сохранить свои настройки? Какие нибудь хорошие практики есть ли, скажите
  • Вопрос задан
  • 8019 просмотров
Решения вопроса 1
Несмотря на возможность сделать docker commit, то, что Вы получите в результате, будет чёрным ящиком, который непонятно каким образом создан. Хорошая практика в данном случае заключается в том, чтобы описать все изменения, которые Вы производите в контейнере, с помощью Dockerfile-а. Этот Dockerfile можно будет сохранить в системе контроля версий, провести его ревью, модифицировать, воспроизвести в сборочном конвеере.

Да, под капотом на каждую строчку в Dockerfile-е происходит вызов docker commit, но важно то, что в этом случает сохраняется источник этих изменений.

Не знаю, как точно настраивается FreePBX, но Вам может понадобиться, например, использовать envsubst для применения переменных окружения, с которыми запущен контейнер, к конфигурационным файлам. А может потребоваться сделать стартовый .sh-скрипт, который при запуске произведёт нужные
конфигурационные действия.

В случае использования переменных окружения также очень полезно в скрипте запуска проверить, заданы ли они, и если нет - упасть с осмысленным сообщением об ошибке:
echo MY_ENV_VAR "${MY_ENV_VAR?MY_ENV_VAR is required!}"
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@krll-k Автор вопроса
Команда 'docker commit' берет верхний уровень контейнера, тот, что для записи и превращает его в слой для чтения. Это фактически превращает контейнер (вне зависимости от того, запущен ли он) в неизменяемый образ.
e3d7d7766165425a9148ac61369ffe9c.png
https://habrahabr.ru/post/272145/ - теория о том как работает Docker
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы