Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.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/0/docker/9.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
Java 如何在docker容器中连接到NREPL_Java_Docker_Clojure_Client Server_Nrepl - Fatal编程技术网

Java 如何在docker容器中连接到NREPL

Java 如何在docker容器中连接到NREPL,java,docker,clojure,client-server,nrepl,Java,Docker,Clojure,Client Server,Nrepl,是否有人能够从docker内部绑定到[java.net InetSocketAddress ServerSocket]?我有一个在docker容器中运行的简单流程。但我无法连接到NRepl过程 我的docker compose.yml看起来像这样 version: '3' services: foo: ports: - ${NREPL_PORT:-7001}:7001 在停靠的应用程序中,绑定到主机/端口时发生了如下情况 InetSocketAddress ia = n

是否有人能够从docker内部绑定到
[java.net InetSocketAddress ServerSocket]
?我有一个在docker容器中运行的简单流程。但我无法连接到NRepl过程

我的
docker compose.yml
看起来像这样

version: '3'
services:
  foo:
    ports:
      - ${NREPL_PORT:-7001}:7001
在停靠的应用程序中,绑定到主机/端口时发生了如下情况

InetSocketAddress ia = new InetSocketAddress("0.0.0.0" 7001);

ServerSocket s = new ServerSocket();
s.setReuseAddress(true);
s.bind(ia);
但我总是在尝试从docker外部连接时出错

λ lein repl :connect localhost:7001
Connecting to nREPL at localhost:7001
SocketException The transport's socket appears to have lost its connection to the nREPL server
        nrepl.transport/bencode/fn--9182/fn--9183 (transport.clj:108)
        nrepl.transport/bencode/fn--9182 (transport.clj:108)
        nrepl.transport/fn-transport/fn--9150 (transport.clj:55)
        clojure.core/binding-conveyor-fn/fn--5739 (core.clj:2030)
        java.util.concurrent.FutureTask.run (FutureTask.java:266)
        java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1142)
        java.util.concurrent.ThreadPoolExecutor$Worker.run (ThreadPoolExecutor.java:617)
        java.lang.Thread.run (Thread.java:745)
我曾尝试侦听这些地址(docker主机无法侦听localhost),但每次都会收到相同的错误

  "0.0.0.0"
  "::"
在运行时,我检查并打开预期的端口

λ docker ps
CONTAINER ID    IMAGE      COMMAND       CREATED         STATUS         PORTS                     NAMES
4d39d81fba69    api_api    "lein run"    5 minutes ago   Up 5 minutes   0.0.0.0:7001->7001/tcp    api_api_1

这些类似的问题(,)在我的案例中并没有太大帮助。

您描述Docker容器中发生的事情,就像它是Java代码一样——是吗?nrepl只能连接到nrepl服务器,而不能连接到任意套接字服务器。@SeanCorfield,所以我可以正常工作。我的主机和docker之间的路由表发生了一些奇怪的事情。现在一切都好了。谢谢你的跟进。蒂姆,你是怎么解决这个问题的?我有一个类似的问题,以前也有过奇怪的docker网络问题。您描述docker容器中发生的事情,就像它是Java代码一样——是吗?nrepl只能连接到nrepl服务器,而不能连接到任意套接字服务器。@SeanCorfield,所以我可以正常工作。我的主机和docker之间的路由表发生了一些奇怪的事情。现在一切都好了。谢谢你的跟进。蒂姆,你是怎么解决这个问题的?我也有类似的问题,以前也有过奇怪的docker网络问题。