In our previous guides, we focussed on basics around Docker in Docker Tutorials as part 1, part 2, part 3 and part 4. With Traefik, we can manage configuration dynamically. Here is a Guide on How to Install and Configure Traefik as Reverse Proxy for Docker Containers on Ubuntu 16.04. Official Traefik website is here :
1 | https://traefik.io |
Of course they have a Docker image too :
1 | https://hub.docker.com/_/traefik/ |
Traefik : Reverse Proxy for Docker Containers on Ubuntu 16.04
First update and upgrade :
---
1 2 | apt update apt upgrade |
Then install Apache Utilities for easy generation of password :
1 | apt install apache2-utils |
Then generate the password with htpasswd. In our below example command, password
is your password (which you should change) for the user admin
(which you should change) :
1 | htpasswd -nb admin password |
You’ll get an encrypted output. Copy-paste and save it. We need to create a configuration file named traefik.toml
. We can create it by opening a new file :
1 | nano traefik.toml |
We will write this entry :
1 | defaultEntryPoints = ["http", "https"] |
Next, we need to configure the way to get access to a dashboard interface. This is where we will need to paste the output from the htpasswd command :
1 2 3 4 5 6 | defaultEntryPoints = ["http", "https"] [web] address = ":8080" [web.auth.basic] users = ["admin:your_encrypted_password"] |
We will add more entries for the configuration file :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | defaultEntryPoints = ["http", "https"] [web] address = ":8080" [web.auth.basic] users = ["admin:your_encrypted_password"] [entryPoints] [entryPoints.http] address = ":80" [entryPoints.http.redirect] entryPoint = "https" [entryPoints.https] address = ":443" [entryPoints.https.tls] [acme] email = "email@example.com" storage = "acme.json" entryPoint = "https" onHostRule = true onDemand = false |
Next we need to create a Docker network for the proxy to share with containers :
1 | docker network create example1 |
After starting Traefik container, we will add it to this network. Then you can add your other containers to this network later for Traefik to proxy. Create an empty file for Let’s Encrypt information :
1 2 | touch acme.json chmod 600 acme.json |
Finally you’ll run command to run Traefik where test.yourdomain.com
is your subdomain for Traefik :
1 2 3 4 5 6 7 8 9 10 11 | docker run -d -v /var/run/docker.sock:/var/run/docker.sock -v $PWD/traefik.toml:/traefik.toml -v $PWD/acme.json:/acme.json -p 80:80 -p 443:443 -l traefik.frontend.rule=Host:test.yourdomain.com -l traefik.port=8080 --network proxy --name traefik traefik:1.3.6-alpine --docker |
You will manage web applications with Docker Compose using a docker-compose.yml
file:
1 | nano docker-compose.yml |
With the content :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | docker-compose.yml version: "3" networks: proxy: external: true internal: external: false services: blog: image: wordpress:4.7.5-apache environment: WORDPRESS_DB_PASSWORD: labels: - traefik.backend=blog - traefik.frontend.rule=Host:blog.yourdomain.com - traefik.docker.network=proxy - traefik.port=80 networks: - internal - proxy depends_on: - mysql mysql: image: mysql:5.7 environment: MYSQL_ROOT_PASSWORD: networks: - internal labels: - traefik.enable=false |
The above is an example to use WordPress official Docker image. Run this commands substituting with real value :
1 2 | export WORDPRESS_DB_PASSWORD=database_password export MYSQL_ROOT_PASSWORD=admin_database_password |
Now run the containers using docker-compose:
1 | docker-compose up -d |
Now if you go to that Traefik subdomain, you’ll see the dashboard. You have to install the web software for other subdomains like you normally do.
Tagged With traefik ubuntu , apt install traefik ubuntu , docker for mac host internal Ubuntu , reverse proxy windows containers , swtting up traefik with reverse proxy on ubuntu 18 04 lts , traefik docker compose , traefik docker windows , traefik docker-compose reverse proxy ubuntu