Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在docker容器中重新安装uberjar?_Docker_Clojure_Leiningen_Read Eval Print Loop - Fatal编程技术网

如何在docker容器中重新安装uberjar?

如何在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

我发现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中设置它