Can't route to container in docker-compose

I must be doing something really stupid - I've followed several blogs and articles about setting up traefik as a reverse proxy but cannot get it working - despite having no errors

My config file is this

log:
    level: DEBUG

api:
    insecure: true
    dashboard: true

entryPoints:
    web:
        address: ":80"

providers:
    docker:
        endpoint: "unix:///var/run/docker.sock"
        exposedByDefault: false

and my docker-compose labels for service "foo" is this

        ports:
            - 4200/tcp
            - 3000/tcp
        labels:
            - traefik.enable=true
            - "traefik.http.routers.foo.entrypoints=web"
            - traefik.http.routers.foo.rule=Host(`dev.foo.io`)
            - traefik.http.services.foo.loadbalancer.server.port=4200

In the dashboard I see entrypoint 80 -> foo@docker -> service foo

My hosts file has

0.0.0.0 dev.foo.io

however, if I curl http://dev.foo.io I get a 404

what am I missing ?