Вопрос хороший, но у меня нет на него хорошего ответа.
Система конфигурации, используемая внутри контейнера, описана здесь:
В файле README там объясняется, как работают хуки в целом. Конкретные доступные хуки зависят от того, как настроен ваш экземпляр — главный файл app.yml включает один или несколько шаблонов. В большинстве случаев одним из них является web.template.yml:
Именно там определяется хук assets_precompile (на строке [L159], на момент написания этого текста). Согласно документации по Pups, вы можете запускать другие команды до или после его выполнения с помощью before_assets_precompile и after_assets_precompile соответственно.
Команды выполняются внутри контейнера Docker, поэтому вам не нужно ничего делать для этого.
Директива cd: может указывать прямо на /var/www/discourse/public/assets/, и каждая строка в cmd выполняется из этого каталога. (Предупреждение: каждая строка в массиве cmd выполняется в отдельной оболочке, как в Makefile).
Я не уверен, будет ли содержимое /var/www/discourse/public/assets/ сохраняться между сборками, поэтому, возможно, вам придется создавать локальный репозиторий Git и выполнять принудительную отправку каждый раз. Более «правильным» решением может быть определение тома Docker для каталога активов в app.yml (как и для других) по аналогии с этим примером и обеспечение его сохранения вне контейнера.