Tento příspěvek je o Traefik for Docker Containers.
Úvod do konfigurace
Jak se děje kouzlo
Traefik for Docker Containers
Pokud ještě nemáte nainstalovaný docker, můžete najít pokyny pro Ubuntu nebo Debian. Tato příručka používá ke spuštění Traefiku docker-compose, proto je nutné nainstalovat také docker-compose. Dva propojené příručky vám pomohou nastavit docker-compose na vašem vlastním hostiteli.
Začněme nastavením Traefik.
Nejprve vytvořte několik souborů a adresářů složek pro naše kontejnery:
mkdir -p /opt/containers/traefik
mkdir /opt/containers/traefik/data
touch /opt/containers/traefik/data/traefik.yml
touch /opt/containers/traefik/data/acme.json
chmod 600 /opt/containers/traefik/data/acme.json
Vygenerovat bezpečné heslo
Vytvořte konfigurační soubory a nastavte šifrované heslo pro přístup k řídicímu panelu traefik. K vytvoření šifrovaného hesla můžete použít nástroj htpasswd. Chcete-li použít nástroj htpasswd, nainstalujte nástroj pomocí následujícího příkazu
$ sudo apt-get install -y apache2-utils
Poté spusťte následující příkaz pro vygenerování bezpečného hesla
$sudo htpasswd -nb unixcop unixcop@123
unixcop:$$apr1$$zUb/YuK2$$57psQ0U71DlfdHPr0yoHe/
K šifrování jsem použil „unixcop@123“. Můžete mít své vlastní předpoklady. Uživatel je považován za „unixcop“, můžete jej nahradit svým vlastním uživatelským jménem.
Zkopírujte automaticky generovaný výstup a někde jej uložte, protože toto zašifrované heslo potřebujeme použít v konfiguračním souboru Traefik k nastavení základního ověřování pro řídicí panel Traefik
traefik.yml
Dále otevřeme náš nově vytvořený konfigurační soubor traefik s editorem dle vašeho výběru.
vim /opt/containers/traefik/data/traefik.yml
api:
dashboard: true
entryPoints:
http:
address: ":80"
https:
address: ":443"
providers:
docker:
endpoint: "unix:///var/run/docker.sock"
exposedByDefault: false
certificatesResolvers:
http:
acme:
email: [email protected] # CHANGE HERE
storage: acme.json
httpChallenge:
entryPoint: http
Vytvořte docker-compose.yml
soubor, kde budete definovat reverse-proxy
služba, která používá oficiální obrázek Traefik:
docker-compose.yml
version: '3'
services:
traefik:
image: traefik:latest
container_name: traefik
restart: unless-stopped
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- 80:80
- 443:443
volumes:
- /etc/localtime:/etc/localtime:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
- ./data/traefik.yml:/traefik.yml:ro
- ./data/acme.json:/acme.json
labels:
- "traefik.enable=true"
- "traefik.http.routers.traefik.entrypoints=http"
- "traefik.http.routers.traefik.rule=Host(`traefik.domain.tld`)"
- "traefik.http.middlewares.traefik-auth.basicauth.users=unixcop:$$apr1$$zUb/YuK2$$57psQ0U71DlfdHPr0yoHe"
- "traefik.http.middlewares.traefik-https-redirect.redirectscheme.scheme=https"
- "traefik.http.routers.traefik.middlewares=traefik-https-redirect"
- "traefik.http.routers.traefik-secure.entrypoints=https"
- "traefik.http.routers.traefik-secure.rule=Host(`traefik.domain.tld`)"
- "traefik.http.routers.traefik-secure.middlewares=traefik-auth"
- "traefik.http.routers.traefik-secure.tls=true"
- "traefik.http.routers.traefik-secure.tls.certresolver=http"
- "traefik.http.routers.traefik-secure.service=api@internal"
networks:
proxy:
external: true
S naším docker-compose.yml definujeme kontejner Traefik docker se všemi nastaveními a konfiguračními soubory. Abyste Traefik zprovoznili, stačí upravit některá nastavení:
- nahraďte obě
traefik.domain.tld
s vlastním názvem domény. Tato doména by měla být subdoménou, jako je například traefik.ae3.ch. Později budete mít přístup k Traefik Dasboard s touto (sub)doménou.
Vytvořit síť Docker pro Traefik
Je dobré nastavit samostatnou dockerovou síť, kterou používá Traefik a všechny ostatní dockerové kontejnery, které byste chtěli Traefikem zpřístupnit.
Chcete-li vytvořit tuto dockerovou síť, vše, co musíte udělat, je vložit následující příkaz do vašeho CLI:
docker network create proxy
Spustit Traefik
docker-compose up -d
Po několika sekundách můžete zkontrolovat svůj Traefik Dashboard a přistupovat k němu ve své vlastní doméně, kterou jste zadali ve svém docker-compose.yml