作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我发现REPL是功能强大且有用的工具。目前,我运行:lein repl
通过REPL与我的Clojure应用进行交互。但是,最近我刚刚将项目容器化。该应用程序现在作为单个独立的uberjar文件位于docker容器中。
因此,我想知道如何在Docker容器内的uberjar文件上运行REPL?
最佳答案
从Clojure 1.8开始,您可以指定JVM option to host a REPL而不对已编译的应用程序进行任何更改:
-Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}"
Dockerfile
中,您的主要命令现在看起来像这样:
java -Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl}" -jar path/to/app.jar
project.clj
中而不是命令行中添加此选项:
:jvm-opts ["-Dclojure.server.repl={:port 5555 :accept clojure.core.server/repl}"]
EXPOSE 5555
中的
Dockerfile
):
$ telnet 127.0.0.1 5555
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
user=> (+ 1 1)
2
user=> (doto 'sandbox.main require in-ns)
sandbox.main
sandbox.main=>
(ns sandbox.main
(:require [clojure.tools.nrepl.server :as serv]))
(defn -main []
(serv/start-server :port 7888)
... do other stuff ...)
lein repl :connect localhost:7888
连接到它。
关于docker - 如何在Docker容器中替换Uberjar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50018490/
我是一名优秀的程序员,十分优秀!