Question

I'm trying to connect to an nREPL from a Docker container that is running another, linked Docker container on port 7888. Despite exposing the port with -p 7888, linking the container with -link <first_container_name>:repl and using the Docker-injected environment host and port variables, I am getting a "Connection refused." error.

Here's how I run the first container:

docker run -i -t -p 7888 clojure-image lein repl :headless :port 7888
~$ nREPL server started on port 55555 on host 127.0.0.1

And the second container:

docker run -i -t -link <first_container_name>:repl clojure-image /bin/bash
username@hostname~$ lein repl :connect 172.0.2.1:7888

Why is my connection being refused? I am able to connect other services like AMQP between Docker containers.

Was it helpful?

Solution

You have to include :host 0.0.0.0 in the lein repl command to allow connections on a hostname/address other than 127.0.0.1:

lein repl :headless :host 0.0.0.0 :port 7888

OTHER TIPS

You can include the port number as follows:

lein repl :headless :port 1234

If you are running on a Mac, you are probably behind boot2docker, so this article helped, a lot. Here is how I connected to the container:

lein repl :connect $(boot2docker ip):7888

And thanks to: What IP do I access when using docker and boot2docker?

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top