traefik docker circleci

Træfɪk, a modern reverse proxy

3 years after


Circle CI License Join the chat at

Træfɪk is a modern HTTP reverse proxy and load balancer made to deploy microservices with ease. It supports several backends (Docker :whale:, Mesos/Marathon, Consul, Etcd, Zookeeper, BoltDB, Rest API, file...) to manage its configuration automatically and dynamically.


  • No dependency hell, single binary made with go
  • Simple json Rest API
  • Simple TOML file configuration
  • Multiple backends supported: Docker, Mesos/Marathon, Consul, Etcd, and more to come
  • Watchers for backends, can listen change in backends to apply a new configuration automatically
  • Hot-reloading of configuration. No need to restart the process
  • Graceful shutdown http connections during hot-reloads
  • Circuit breakers on backends
  • Round Robin, rebalancer load-balancers
  • Rest Metrics
  • Tiny docker image included
  • SSL backends support
  • SSL frontend support
  • Clean AngularJS Web UI
  • Websocket support


Here is a demo of Træfɪk using Docker backend, showing a load-balancing between two servers, hot reloading of configuration, and graceful shutdown.


Web UI

You can access to a simple HTML frontend of Træfik.

Web UI Providers Web UI Health


  • Oxy: an awsome proxy library made by Mailgun guys
  • Gorilla mux: famous request router
  • Negroni: web middlewares made simple
  • Manners: graceful shutdown of http.Handler servers

Quick start

./traefik traefik.toml
  • Use the tiny Docker image:
docker run -d -p 8080:8080 -p 80:80 -v $PWD/traefik.toml:/traefik.toml emilevauge/traefik
  • From sources:
git clone


You can find the complete documentation here.


Refer to the benchmarks section in the documentation.



You need either Docker and make, or go and glide in order to build traefik.

Setting up your go environment

  • You need go v1.5
  • You need to set export GO15VENDOREXPERIMENT=1 environment variable
  • You need go-bindata to be able to use go generate command (needed to build) : go get
  • If you clone Træfɪk into something like ~/go/src/, your GOPATH variable will have to be set to ~/go: export GOPATH=~/go.

Using Docker and Makefile

You need to run the binary target. This will create binaries for Linux platform in the dist folder.

$ make binary
docker build -t "traefik-dev:no-more-godep-ever" -f build.Dockerfile .
Sending build context to Docker daemon 295.3 MB
Step 0 : FROM golang:1.5
 ---> 8c6473912976
Step 1 : RUN go get
docker run --rm  -v "/var/run/docker.sock:/var/run/docker.sock" -it -e OS_ARCH_ARG -e OS_PLATFORM_ARG -e TESTFLAGS -v "/home/emile/dev/go/src/"dist":/go/src/"dist"" "traefik-dev:no-more-godep-ever" ./script/ generate binary
---> Making bundle: generate (in .)
removed 'gen.go'

---> Making bundle: binary (in .)

$ ls dist/

Using glide

The idea behind glide is the following :

  • when checkout(ing) a project, run glide up --quick to install (go get …) the dependencies in the GOPATH.
  • if you need another dependency, import and use it in the source, and run glide get to save it in vendor and add it to your glide.yaml.
$ glide up --quick
# generate
$ go generate
# Simple go build
$ go build
# Using gox to build multiple platform
$ gox "linux darwin" "386 amd64 arm" \
# run other commands like tests
$ go test ./...
ok      _/home/vincent/src/github/vdemeester/traefik    0.004s


You can run unit tests using the test-unit target and the integration test using the test-integration target.

$ make test-unit
docker build -t "traefik-dev:your-feature-branch" -f build.Dockerfile .
# […]
docker run --rm -it -e OS_ARCH_ARG -e OS_PLATFORM_ARG -e TESTFLAGS -v "/home/vincent/src/github/vdemeester/traefik/dist:/go/src/" "traefik-dev:your-feature-branch" ./script/ generate test-unit
---> Making bundle: generate (in .)
removed 'gen.go'

---> Making bundle: test-unit (in .)
+ go test -cover -coverprofile=cover.out .
ok   0.005s  coverage: 4.1% of statements

Test success

Related Repositories



nginx-consul based UI for Mantl ...



nginx-consul based UI for Mantl ...



A micro-service infrastructure generator based on Yeoman, Kubernetes/Docker Swar ...



Showcasing a bare-metal multi-platform kubeadm setup with persistent storage and ...



Prometheus exporter for Træfik metrics ...

Top Contributors

emilevauge vdemeester ldez dylanmei kmtong PierreZ invalid-email-address danzel keis Hugues-Antoine jpillora janeczku dontrebootme gitter-badger


-   v1.0.alpha.425 zip tar
-   v1.0.alpha.421 zip tar
-   v1.0.alpha.418 zip tar
-   v1.0.alpha.412 zip tar
-   v1.0.alpha.404 zip tar
-   v1.0.alpha.392 zip tar
-   v1.0.alpha.374 zip tar
-   v1.0.alpha.367 zip tar
-   v1.0.alpha.364 zip tar
-   v1.0.alpha.361 zip tar
-   v1.0.alpha.358 zip tar
-   v1.0.alpha.357 zip tar
-   v1.0.alpha.341 zip tar
-   v1.0.alpha.338 zip tar
-   v1.0.alpha.336 zip tar
-   v1.0.alpha.333 zip tar
-   v1.0.alpha.329 zip tar
-   v1.0.alpha.311 zip tar
-   v1.0.alpha.306 zip tar
-   v1.0.alpha.302 zip tar
-   v1.0.alpha.291 zip tar
-   v1.0.alpha.290 zip tar
-   v1.0.alpha.288 zip tar
-   v1.0.alpha.285 zip tar
-   v1.0.alpha.275 zip tar
-   v1.0.alpha.274 zip tar
-   v1.0.alpha.273 zip tar
-   v1.0.alpha.272 zip tar
-   v1.0.alpha.271 zip tar
-   v1.0.alpha.270 zip tar