Has the way external http prefixes changed for version 3.5.0?

Setting up a docker container with version 3.4.0 but I get

“Exit reason: HTTP async server failed to start listening at [http://*:2113/, http://127.0.0.1:2113/, http://localhost:2113/].”

when I try to use a wild card prefix. If I use the ip of the container it works, but I can’t use the IP of the docker host which makes it really hard to communicate with it from the outside of the container.

I based my 3.4.0 version out of wkruse code here (which is using 3.0.1): https://github.com/wkruse/eventstore-docker. Modified it somewhat to be able to set the IP to that of the container. My sample is here: https://github.com/mastoj/docker-images/tree/master/eventstore

I run the container with the following:

#!/bin/bash
docker run --name es -it -p 2113:2113 -p 1113:1113 -p 1112:1112 -p 2112:2112 mastoj/eventstore --ext-ip="$eth0" --int-ip="$eth0" --run-projections=all

``

I would like to run it with:

#!/bin/bash
docker run --name es -it -p 2113:2113 -p 1113:1113 -p 1112:1112 -p 2112:2112 mastoj/eventstore --ext-ip="$eth0" --int-ip="$eth0" --ext-http-prefixes="http://*:2113/ --run-projections=all

``

Has how prefixes are used changed from version 3.0.1 to 3.4.0? Do I need to set up proper host names or dns to get it working?

Your configuration does appear to be correct, can you try setting --add-interface-prefixes=false

I’ll setup docker in the morning and attempt to reproduce a working setup.

Thank you Pieter, that fixed it :).

Your configuration does appear to be correct, can you try setting --add-interface-prefixes=false

I’ll setup docker in the morning and attempt to reproduce a working setup.

If you want to run a cluster you will also likely need to use
advertiseas set to what the external IP address actually is. This will
gossip the publicly visible ip address not the ip address you are
bound to.

Thank for a quick response as always. I will play with a cluster so that is definitely something I need.

Why do I need that if ext-ip is set? And also dns is used. I have some problem understanding the clustering model, is it well documented anywhere? I’ve seen the documentation about how to set it up but I don’t think it describe how it works in a good way and what options one have. In my naive mind I thought that eventstore used dns to look up the IPs of all nodes filtering out its own IP, and then just began communicating with the other IPs on the internal port. Why do one need to configure all the IPs and advertise as etc.?

"
Why do I need that if ext-ip is set? And also dns is used. I have some
problem understanding the clustering model, is it well documented
anywhere? I've seen the documentation about how to set it up but I
don't think it describe how it works in a good way and what options
one have. In my naive mind I thought that eventstore used dns to look
up the IPs of all nodes filtering out its own IP, and then just began
communicating with the other IPs on the internal port. Why do one need
to configure all the IPs and advertise as etc.?"

It uses DNS for discovery. After its a gossip protocol. Without
advertise how would you setup a NAT'ed node, the node has no idea what
its routable address is. Beyond that even with DNS what happens when
you NAT under DNS (a good example might be elastic ips)

I definitely know to little about networking I realize :). Always something to learn. I play some more with my setup, it’s the kubernetes thing I wrote in another thread and update there if I got any problems. The answer for this thread has already been provided.

Its more docker forces you to think about such things. I believe I OH
some place "docker: turning devs into bad network admins" might have
been twitter :wink:

That might be true about bad network admins, but many times the operations people isn’t that much better… especially if you come from a .NET env. Pushing network stuff down to devs via docker is a good thing since we (developers) should know this too at some level at least, but we should involve an expert if we have access to one.

I’ll most likely have some other questions, but the will come on the kubernetes thread I created last week. Hard to get things working if I only get a couple of minutes here and there :).

My goal is to get a cluster running with kubernetes locally using the built in DNS in kubernetes. I’ll of course blog about it when done.