Skip to main content

Ajouter un service sur Traefik

Nous voulons connecter notre service Pingvin sur le reverse proxy Traefik.

Prérequis :
 
  • Avoir un nom de domaine 
    • Dans notre cas nous utiliserons le nom de domaine : miraceti.net
  • Avoir une configuration de Traefik Docker fonctionnel 

Configuration nom de domaine

Grâce à notre nom de domaine, nous allons pouvoir créer des sous domaine (en CNAME A).

Sur le site de gestion de notre nom de domaine respectif, dans la section DNS, ajouter l'entrée suivante : 

  • sub.domaine.ext         Type       ip.adress.server
    • Soit
  • pingvin.miraceti.net     A        12.34.56.78

 

Configuration

Configuration à rajouter dans le fichier docker-compose.yml de Pingvin.

Importer le network traefik-network pour que le service Pingvin puisse communiquer avec Traefik : 

  networks:
      traefik-network:
         external: true

Rajouter le network pour lier l'import à Pingvin : 

  networks:
      - traefik-network

Rajouter les labels pour configurer l'accès à Pingvin à travers Traefik : 

Dans notre cas, le service Pingvin écoute le port 3000.

   labels:
      - "traefik.enable=true"
      - "traefik.http.routers.portainer-frontend.pingvin.rule=Host(`${PINGVIN_FRONTEND_HOSTNAME}PINGVIN_HOSTNAME}`)"
      - "traefik.http.routers.portainer-frontend.pingvin.service=pingvin-frontend"pingvin"
      - "traefik.http.routers.portainer-frontend.pingvin.entrypoints=websecure"
      - "traefik.http.services.portainer-frontend.pingvin.loadbalancer.server.port=9000"3000"
      - "traefik.http.routers.portainer-frontend.pingvin.tls=true"
      - "traefik.http.routers.portainer-frontend.pingvin.tls.certresolver=letsencrypt"
      - "traefik.http.services.pingvin.loadbalancer.passhostheader=true"
      - "traefik.http.routers.portainer-frontend.pingvin.middlewares=compresstraefik"
      - "traefik.http.middlewares.compresstraefik.compress=true"
      - "traefik.http.routers.portaier-edge.rule=Host(`${PINGVIN_EDGE_HOSTNAME}`)"
      - "traefik.http.routers.portaier-edge.service=pingvin-edge"
      - "traefik.http.routers.portaier-edge.entrypoints=websecure"
      - "traefik.http.services.portaier-edge.loadbalancer.server.port=8000"
      - "traefik.http.routers.portaier-edge.tls.certresolver=letsencrypt"
      - "traefik.docker.network=traefik-network"

Rajouter les variables suivantes dans .env :

# Pingvin Variables
PINGVIN_IMAGE_TAG=stonith404/pingvin-share:latest

# Pingvin Traefik Variables
PINGVIN_HOSTNAME=pingvin.miraceti.net