docker deploy won't publish port in swarm

Oldek picture Oldek · Jul 1, 2016 · Viewed 10.1k times · Source

I've got a swarm set up with a two nodes, one manager and one worker. I'd like to have a port published in the swarm so I can access my applications and I wonder how I achieve this.

version: '2'
services:
  server:
    build: .
    image: my-hub.company.com/application/server:latest
    ports:
      - "80:80"

This exposes port 80 when I run docker-compose up and it works just fine, however when I run a bundled deploy

docker deploy my-service

This won't publish the port, so it just says 80/tcp in docker ps, instead of pointing on a port. Maybe this is because I need to attach a load balancer or run some fancy command or maybe add another layer of config to actually expose this port in a multi-host swarm.

Can someone help me understand what I need to configure/do to make this expose a port.

My best case scenario would be that port 80 is exposed, and if I access it from different hostnames it will send me to different applications.

Update: It seems to work if I run the following commands after deploying the application

docker service update -p 80:80 my-service_server
docker kill <my-service_server id>

I found this repository for running a HA proxy, it seems great and is supported by docker themselves, however I cannot seem to apply this separate to my services using the new swarm mode.

https://github.com/docker/dockercloud-haproxy

There's a nice description in the bottom describing how the network should look:

Internet -> HAProxy -> Service_A -> Container A

However I cannot find a way to link services through the docker service create command, optimally now looks like a way to set up a network, and when I apply this network on a service it will pick it up in the HAProxy.

-- Marcus

Answer

sebbalex picture sebbalex · Nov 9, 2016

As far as I understood for the moment you just can publish ports updating the service later the creation, like this:

docker service update my-service --publish-add 80:80