docker-archive / dockercloud-haproxy

HAproxy image that autoreconfigures itself when used in Docker Cloud
https://cloud.docker.com/
651 stars 187 forks source link

Added support for running on Worker nodes in Swarm Mode #216

Open samattridge opened 6 years ago

samattridge commented 6 years ago

There may be a better way of achieving this but I've simply added a SWARM_MASTER_ADDRESS environment variable that, if it exists, will allow the Haproxy to run on worker nodes. This is a workaround for the issue I raised (https://github.com/docker/dockercloud-haproxy/issues/215).

samattridge commented 6 years ago

My initial attempt using 'RUNNING_MODE_OVERRIDE' didn't work.

tifayuki commented 6 years ago

@samattridge LGTM can you also please update the readme? :)

samattridge commented 6 years ago

Thanks @tifayuki. I've now updated the readme. Hope it's ok?

sheerun commented 6 years ago

@tifayuki Could you merge?

sheerun commented 6 years ago

@samattridge Could you explain what you mean by "Use this in conjunction with mounting /var/run/docker.sock to make this work" ? What would be example docker-compose.yml to make this work?

samattridge commented 6 years ago

@sheerun Ah, this is the issue with leaving too much time before looking back at this! /var/run/docker.sock mount is not required. Sorry about that.

It's not a docker-compose.yml file but this is the command I'm running if this helps?

docker service create --name haproxy --network proxy -e DEFAULT_SSL_CERT="certdetails" --publish mode=host,target=443,published=443 --constraint "node.labels.server == application" -e SWARM_MASTER_ADDRESS="172.20.0.68:2375" --mode global dockercloud-haproxy:latest

This is starting a service called 'haproxy' globally on any servers that have the 'server' label 'application' which, in my environment, are not Swarm masters.