根据我的经验,Docker方法是第三种选择,将操作包装在一个HTTP facade中,让它一直运行。
Docker很好地支持HTTP路径(您可以使用其他容器
--name
例如,作为主机名),它很容易在其他环境中测试或模拟这还意味着,如果您确实需要对其中一个支持工具进行更新,您可以重新启动另一个容器;您不必关闭主应用程序来更新它。
Docker在处理其主要交互模式是命令行参数、stdin或stdout的进程时并不能很好地工作。特别是一个集装箱发射另一个集装箱
该容器需要通过主机进行不受限制的根访问
,您需要使用DockerAPI,而不仅仅是启动子进程。
如果外部程序相当独立,那么将它们复制到Dockerfile中并将它们作为普通子进程调用就可以工作。您提到Java;如果您只为偶尔启动的某个对象添加一个完整的JVM,则会增加臃肿和复杂性。