自分の開発環境で Docker & Traefik を使う 🐳

自分の開発環境で Docker & Traefik を使う 🐳

Bonjour à tous ! 👋

Nous allons aujourd'hui voir comment utiliser Docker et Traefik afin d'avoir des noms de domaines personnalisés pour nos applications en développement. Pour se faire, nous allons utiliser traefik.

Traefik est un reverse proxy / load balancer. Il dispose de plein de fonctionnalités cool comme l'auto discovery, une configuration simplifiée pour des metrics ou encore une gestion facilité des certificats SSL ( let's encrypt, ACME etc..) ce qui en fait un allié de choix pour pas mal de services d'orchestration de container ( Kubernetes, Mesos ... ).

Nous allons aujourd'hui voir comment on peut faire fonctionner tout ça ensemble.

dnsmasq のインストールと設定

Dnsmasq は DNS サービスを提供するソフトウェアです。ここでは *.test 形式のすべての HTTP リクエストをローカルホストにリダイレクトするように設定します。

Installation sur mac ( via brew ) :

brew install dnsmasq

Ajout de la configuration de redirection :

sudo bash -c 'echo "nameserver 127.0.0.1" > /etc/resolver/test'
sudo echo 'address=/.test/127.0.0.1' > $(brew --prefix)/etc/dnsmasq.conf

Redémarrer le service :

sudo launchctl unload -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist
sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist

traefik のインストールと設定

Voici deux fichiers de configuration nécessaire pour faire fonctionner traefik. J'utilise ici un fichier docker-compose mais il est tout à fait possible de lancer ce container en ligne de commande. Le deuxième fichier inclut la configuration minimale pour faire fonctionner traefik.

Comme vous pouvez le voir, les configurations de routing se fait grace aux labels. Vous retrouverez la liste des directives sur la documentations de traefik ( Traefik のドキュメント — Docker バックエンド設定(コンテナ上) )

docker-compose-traefik.yml

version: "3"

services:
  proxy:
    image: traefik
    networks:
      - traefik
    ports:
      - "80:80"
      - "8080:8080"
      - "443:443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./traefik.toml:/traefik.toml"
    restart: unless-stopped
    labels:
      - "traefik.frontend.rule=Host:traefik.test"
      - "traefik.port=8080"
      - "traefik.backend=traefik"
      - "traefik.frontend.entryPoints=http"

networks:
  traefik:
    external:
      name: traefik

traefik.toml

defaultEntryPoints = ["http"]

[entryPoints]
  [entryPoints.http]
  address = ":80"

[web]
address = ":8080"
[web.auth.basic]
  users = ["admin:$apr1$o1HmXW0i$wWgVewL1kLu9gaqmMDh6u/"]

[docker]
endpoint = "unix:///var/run/docker.sock"
domain = "test"
watch = true
exposedbydefault = true

Vous pouvez dès a présent lancer la commande docker-compose -f docker-compose-traefik.yml up pour démarrer le container. Une fois l'opération terminée, rendez-vous sur votre navigateur à l'adresse suivante : traefik.test のページ.

Dans le fichier de configuration traefik.toml un auth basic est configuré ( login: admin, mdp: admin ).

Vous devriez voir après ça le superbe dashboard de traefik ! 🎉🎊

traefik の使い方

Vous allez pouvoir maintenant tester traefik. Pour cela, nous allons utiliser l'image tutum/hello-world.

docker run --network=traefik --label="traefik.enable=true" --label="traefik.frontend.rule=Host:hello-world.test" --label="traefik.backend=hello-world" --label="traefik.port:26000" --label="traefik.frontend.entryPoints=http" -p 26000:80 tutum/hello-world

A présent, à l'aide de votre navigateur, rendez-vous sur sur hello-world.test のページ

Et voilà ! 👏

次は?

Pour le prochain article, nous verrons comment générer un certificat SSL afin d'utiliser le HTTPS pour votre environnement de développement.

参考資料と便利なリンク

タグ

  • ドッカー

  • traefik

  • dnsmasq

  • マック

この記事は

コメント

読み込み中...

自分の開発環境で Docker & Traefik を使う 🐳 | DEMILY Clément