Skip to main content

Traefik file provider configuration

· 2 min read
Stephan Hochdörfer
Head of IT Business Operations

In Traefik providers are infrastructure components (e.g. container engines, cloud providers, or key-value stores) that can be queried in order to find relevant information about the routing configuration.

For static, global services it can make sense to define the service in a file. All you have to do in your global Traefik configuration file is reference that other file:

directory = "/"
filename = "static_services.toml"

However, there's no need for a separate file. You can also define those services in your global Traefik configuration:

address = ":8080"
certResolver = "myresolver"

rule = "Host(`somehost.loc`) && PathPrefix(`/metrics`)"
entryPoints = ["traefik"]
service = "prometheus@internal"
middlewares = ["metrics-auth"]

manualRouting = true

When I first tried it like that, Traefik did not recognize the custom routing configuration and it took me a while to figure out why it worked in a different scenario.

The gist is, you have to still define a file provider and point it to the very same configuration file. Let's say your Traefik configuration file is stored in a file named config.toml and you mounted the file in the root directory (/) of the Traefik container, then you need to add a file provider definition that looks like this:

directory = "/"
filename = "config.toml"

This way, Traefik will configure all routing information found in the global configuration file and ignore all other configuration parameters.

What I like about this approach is that the whole Traefik configuration is part of one file. For me that is easier when I need to debug things as I only need to have one file open.