如何在clojure停止docker服务器?

我正在使用ring和clojure编写一个web应用程序。 我正在使用开发服务器的docker适配器和IDE的emacs / SLIME。 尽pipewrap-reload确实有帮助,run-jetty阻止了我的slime会话,我希望能够随意启动/停止它,而不必在单独的terminal会话中运行它。 理想情况下,我想定义一个服务器代理程序,并启动启动/停止代理服务器的start-server和stop-server。 这可能吗?

我通常在我的Ring应用中有一行,如下所示:

(defonce server (run-jetty #'my-app {:port 8080 :join? false})) 

这可以防止lockingREPL。 它也允许我重新编译这个文件,而不用担心我的服务器会被重新定义。 它也可以让你在REPL中进行交互,如下所示:

 user=> (.stop server) 

 user=> (.start server) 

Jetty文档有关于Jetty 正常closures的一些信息。 这可能不是足够的信息,但它可能会让你开始。

我还没有开始玩compojure,但总体上我更喜欢和Tomcat一起工作。 它更全面; 除此之外,还有一个用于启动和closures的API,它在专用端口上侦听closures命令; 有ant任务要做到这一点,他们当然也可以从Java应用程序调用。 我只是不知道Compojure在将REPL连接到正在运行的Web容器实例方面做了什么样的魔法,以及如果/如何自动类重新加载发生……希望别人能够提供更多的信息。

Interesting Posts