Долгое время я толком не понимал, что такое pups, и, честно говоря, до сих пор немного запутался.
![]()
Я понимаю, что образы Docker для Discourse нужно настраивать. Вместо выполнения этого через bash-скрипты это делается через YAML-файлы (которые генерируют bash-скрипты), которые можно найти здесь: https://github.com/discourse/discourse_docker/tree/master/samples
Запуск контейнеров Docker и настройка через pups переплетены в скрипте запуска здесь:
Строка, на которую я сослался, представляет для меня особый интерес. Похоже, она запускает pups внутри контейнера Docker. Я попытался запустить тестовый файл test.yml через pups, и, очевидно, он не был выполнен внутри контейнера Docker. Он просто сгенерировал bash-скрипт (команды bash?), который был немедленно выполнен.
Мой вопрос: как заставить pups работать внутри dev-контейнера Docker? Строка, на которую я указал, очень длинная, и часть её, кажется, излишня для моего случая. Может, кто-то сможет привести простой пример того, как объединить вывод pups с контейнером Docker.
По сути, я хочу добавить команду pups, аналогичную той, что в скрипте запуска, в конце скрипта boot_dev (или запустить её как отдельный скрипт после скрипта boot_dev).
Фоновая информация:
Причина этого — > я хочу добавить долгоживущий процесс в runit. @merefield указал мне на его плагин Frotz как на пример того, как это сделать:
Вопрос в том: как сделать это локально для тестирования входных данных pups? Насколько я понимаю, dev-инстанс Docker не настраивается через YAML-файл и pups. Входные данные pups для плагина Frotz касаются файла server.yml при установке плагина, поэтому я в целом запутался, как сделать это локально.
Ладно, спасибо ![]()
РЕДАКТИРОВАНИЕ:
Хорошо, я нашёл такие строки.
Так что получается, что pups нужно просто запустить внутри контейнера. Не знаю, почему я думал, что он только генерирует команды. Я просто увидел эту фразу в readme:
pups — это небольшая библиотека, позволяющая автоматизировать процесс создания Unix-образов.
Это не имело для меня большого смысла, и, естественно, моё подсознание взяло верх.
Аргумент
--gen-docker-run-argsиспользуется для того, чтобы вывод pups был в форматеdocker run <вывод аргументов>.
Как-то это привело меня к тому, что я представил pups как инструмент, превращающий YAML-файлы в вывод команд bash. Как компилятор YAML в bash. Но на самом деле это скорее интерпретатор YAML. Он не только создаёт команды, но и немедленно их выполняет.