如何在docker容器中重新安装uberjar?
我发现REPL是一个强大而有用的工具。目前,我运行:如何在docker容器中重新安装uberjar?,docker,clojure,leiningen,read-eval-print-loop,Docker,Clojure,Leiningen,Read Eval Print Loop,我发现REPL是一个强大而有用的工具。目前,我运行:lein repl通过repl与我的Clojure应用程序交互。然而,我最近刚刚将我的项目装箱。该应用程序现在作为一个单独的uberjar文件放在docker容器中 因此,我想知道如何在docker容器中的uberjar文件上运行REPL 从Clojure 1.8开始,您可以在不更改已编译应用程序的情况下指定: -Dclojure.server.repl="{:port 5555 :accept clojure.core.server/repl
lein repl
通过repl与我的Clojure应用程序交互。然而,我最近刚刚将我的项目装箱。该应用程序现在作为一个单独的uberjar文件放在docker容器中
因此,我想知道如何在docker容器中的uberjar文件上运行REPL 从Clojure 1.8开始,您可以在不更改已编译应用程序的情况下指定:
-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
您还可以在Leiningen项目中添加此选项。clj
而不是命令行:
:jvm-opts ["-Dclojure.server.repl={:port 5555 :accept clojure.core.server/repl}"]
当应用程序运行时,您应该能够连接到该套接字,假设您的容器已暴露端口(Dockerfile
中的EXPOSE 5555
):
或者,您可以从应用程序代码中托管REPL,如中所述
并使用
lein repl:connect localhost:7888连接到它。从Clojure 1.8开始,您可以在不更改已编译应用程序的情况下指定:
-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
您还可以在Leiningen项目中添加此选项。clj
而不是命令行:
:jvm-opts ["-Dclojure.server.repl={:port 5555 :accept clojure.core.server/repl}"]
当应用程序运行时,您应该能够连接到该套接字,假设您的容器已暴露端口(Dockerfile
中的EXPOSE 5555
):
或者,您可以从应用程序代码中托管REPL,如中所述
并使用lein repl:connect localhost:7888连接到它
参考此问题将repl嵌入到您的UberJar中。之后,您可以从容器中运行它。请参考此问题,将REPL嵌入到您的UberJar中。之后,您可以从容器中运行它。我在docker文件中暴露了端口5555,但我在运行telnet 127.0.0.1 5555时,外部主机关闭了连接。
。我还将docker-compose.yml更新为端口:-3000:3000-5555:5555
jvm选项是否需要成为配置文件的一部分?@Freid001是否设置clojure.server.repl
系统属性,在docker文件或project.clj中?我正在项目中设置它。cljI在docker文件中暴露了端口5555,但我的连接被外部主机关闭。在运行telnet 127.0.0.1 5555
时。我还将我的docker-compose.yml更新为端口:-3000:3000-5555:5555
是否:jvm选项需要成为配置文件的一部分?@Freid001是否在Dockerfile或project.clj中设置clojure.server.repl
系统属性?我正在project.clj中设置它