Предлагаю работать с двумя контейнерами. Для этого создайте копию вашего текущего файла app.yml (он находится в /var/discourse/containers) и переименуйте её, например, в import.yml. Затем обновите параметр version на ветку вашего кастомного импортера.
params:
version: ваша-ветка
Всякий раз, когда нужно запустить импорт, остановите контейнер app, запустите контейнер import и выполните скрипт внутри контейнера import. Если в Discourse были внесены значительные изменения, возможно, потребуется перебаза вашей ветки на последний коммит из ядра и пересборка контейнера.
cd /var/discourse
./launcher enter import
# хотите переключиться на другую ветку?
su discourse -c 'git checkout <ветка>'
# хотите получить новый код?
su discourse -c 'git pull'
После завершения миграции остановите контейнер импорта и перезапустите контейнер приложения.
cd /var/discourse
./launcher stop import
./launcher start app
Благодарность @gerhard, который научил меня всему этому ![]()