По моему опыту, Docker Way - это ваш третий вариант, чтобы обернуть операцию в фасаде HTTP и оставить ее всегда запущенной.
Путь HTTP хорошо поддерживается Docker (вы можете использовать другиеконтейнеры '--name
в качестве имен хостов, например), и их легко тестировать или моделировать в других средах.Это также означает, что если вам нужно обновить одно из этих вспомогательных средств, вы можете просто перезапустить этот другой контейнер;вам не нужно закрывать основное приложение, чтобы обновить его.
Docker не очень хорошо работает с процессами, основной режим взаимодействия которых - аргументы командной строки, stdin или stdout.В частности, для одного контейнера для запуска другого контейнера этому контейнеру требуется неограниченный root-доступ через хост , и вам нужно работать с Docker API, а не просто «запускать подпроцесс».
Есливнешние программы достаточно автономны, затем копируют их в Dockerfile и называют их обычными подпроцессами.Вы упоминаете Java;если вы добавляете целую JVM к образу, не являющемуся Java, для чего-то, что вы запускаете только изредка, это добавит раздувание и сложность.