In Docker Swarm, the labels need to go inside the deploy section.
Remove providers.docker, unless you really want to discover additional only-local running containers.
Note that in Docker Swarm, when you don’t set ports into host mode, an additional ingress network will be created, which will forward incoming requests round-robin to the nodes.
Check simple Traefik Swarm example.