Docker Swarm and mesh ports

I’m using docker swarm to run my web services. Lately I added an node to the swarm, that already hosts some other non-docker services like a webserver. I just wanted to use free resources there to distribute some containers. The problem what I have now with this is, that I expose port 80/443 within the swarm, which will “overwrite” the already bound 80/443 ports on the node - so that the already existing webserver now returns the HTTP traffic from the swarm :). I know that this is expected behavior of the mesh routing, but I’m wondering how docker manages it to “overwrite” an already bound port :).

Since I want to keep the existing webserver, but only distribute things like ELK to the node I’m asking myself whether it is possible to not expose the swarm published port on nodes or a specific node. I guess these ports aren’t used anyway by the mesh routing itself - since AFAIK this uses specific swarm ports for this? Please correct me if I’m wrong.

It would be great if exposing swarm ports on an external node interface could be avoided. Does somebody have more insights into this?