Pihole TCP/UDP Services for port 53 behind Traefik

Hello,
I'm playing with Traefik and wanted to test Pihole both Admin and DNS (Port 53) behind Traefik.

I can access the Admin page just fine. However, DNS queries via Traefik don't seem to be working. Here's my docker-compose file for Pihole

version: '3.8'

networks:
  backend:
    external: true

services:
  pihole:
    image: pihole/pihole:latest
#    user: root
    restart: unless-stopped
    container_name: pihole
    volumes:
      - "$PWD/pihole/etc-pihole/:/etc/pihole/"
      - "$PWD/pihole/etc-dnsmasq/:/etc/dnsmasq.d/"
    networks:
      - backend
    environment:
      WEBPASSWORD: 'pihole'
    dns:
      - 127.0.0.1
      - 1.1.1.1
    labels:
      - "traefik.enable=true"
      - "traefik.docker.network=backend"

      ## TCP Routers/Service
      - "traefik.tcp.routers.pihole-rtr.entrypoints=dns-ep"
      - "traefik.tcp.routers.pihole-rtr.rule=HostSNI(`*`)"
      - "traefik.tcp.routers.pihole-rtr.service=pihole-svc"
      - "traefik.tcp.services.pihole-svc.loadbalancer.server.port=53"

      ## UDP Routers/Services
      - "traefik.udp.routers.pihole-udp-rtr.entrypoints=dns-udp-ep"
      - "traefik.udp.routers.pihole-udp-rtr.service=pihole-udp-svc"
      - "traefik.udp.services.pihole-udp-svc.loadbalancer.server.port=53"

      ## TCP Routers/Service
      - "traefik.http.routers.pihole-a-rtr.entrypoints=http-ep"
      - "traefik.http.routers.pihole-a-rtr.rule=Host(`pihole.debian.lan`)"
      - "traefik.http.routers.pihole-a-rtr.service=pihole-a-svc"
      - "traefik.http.services.pihole-a-svc.loadbalancer.server.port=80"

How can I diagnose and fix this issue?

Edit:
If I run "docker exec -ti pihole dig a google.com" I get:

; <<>> DiG 9.10.3-P4-Debian <<>> a google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61350
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1452
;; QUESTION SECTION:
;google.com. IN A

;; ANSWER SECTION:
google.com. 293 IN A 216.58.211.174

;; Query time: 11 msec
;; SERVER: 127.0.0.11#53(127.0.0.11)
;; WHEN: Tue Jun 30 19:11:57 UTC 2020
;; MSG SIZE rcvd: 554

Edit: @cakiwi here is the Traefik service:

version: "3.8"

services:
  traefik:
    image: "traefik:latest"
    restart: unless-stopped
    container_name: traefik
    ports:
      - "80:80"
      - "443:443"
      - "8080:8080"
      - "53:53"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "$PWD/traefik/conf:/etc/traefik/"
      - "$PWD/traefik/logs/:/logs"
      - /etc/localtime:/etc/localtime:ro
    networks:
      - web
      - backend
      - internal
    labels:
      - "traefik.enable=true"

What does the traefik service look like(I'm assuming you run it in docker too).

@tam481 You need to publish 53 udp on the traefik container too. No protocol on the services port defaults to tcp only. https://docs.docker.com/compose/compose-file/#ports

You can query just using tcp to test your current setup. Dig has the +tcp flag for this.

That worked beautifully both TCP and UDP now. Thank you so much