Formations aurelearn

Mise en place d’un environnement local dockerisé

Dockeriser son environnement local apporte un grand nombre d’avantages :

  • Chaque projet possède le même environnement que celui de production
  • Pas d’interactions possibles entre projets (sauf si nécessaire)
  • Versions différentes de langage par projet

Nous allons ici utiliser traefik ↗, un reverse-proxy qui nous permettra d’accéder à nos sites en développement via des URLs de type monsite.traefik.me. Ainsi nous aurons droit à des certificats SSL automatiquement et pourrons outrepasser certaines contraintes d’API qui refusent l’utilisation de localhost.

Installation

  1. Récupérez les 3 fichiers disponibles sur ce snippet GitLab : https://gitlab.com/-/snippets/2546027 ↗
  2. Placez ces 3 fichiers dans un dossier nommé local_env à la racine de votre dossier utilisateur
  3. Créez un network docker global nommé local_environment_web avec la commande : docker network create local_environment_web
  4. Lancez les services en vous plaçant dans votre dossier local_env puis en exécutant : docker compose up -d

Pour chaque projet

Pour rendre disponible n’importe quel service Docker en tant que sous-domaine de traefik.me (par exemple my-awesome-website.traefik.me), vous devez inclure les labels suivants dans le service en question de votre projet :

docker-compose.yml

YOUR_SERVICE:
labels:
traefik.enable: true
traefik.docker.network: local_environment_web
traefik.http.routers.YOUR_SERVICE.tls: true
traefik.http.routers.YOUR_SERVICE.rule: HostRegexp(`YOUR_SUBDOMAIN{ip:(\.[0-9]{3}\.[0-9]{3}\.[0-9]{1}\.[0-9]{2,3})?}.traefik.me`)
traefik.http.routers.YOUR_SERVICE.tls.domains[0].main: "YOUR_SUBDOMAIN.traefik.me"
traefik.http.routers.YOUR_SERVICE.tls.domains[0].sans: "YOUR_SUBDOMAIN-*.traefik.me"
# Uncomment only if the port is different from 80, and replace by the correct one (typically given in the docker hub documentation of the image)
# traefik.http.services.YOUR_SERVICE.loadbalancer.server.port: "YOUR_PORT"

Vous devez également attacher le network global local_environment_web à votre service :

docker-compose.yml

YOUR_SERVICE:
labels:
...
networks:
- local_environment_web
networks:
local_environment_web:
external: true

Vous serez alors en mesure d’accéder à votre site grâce à l’URL YOUR_SUBDOMAIN.traefik.me !

© 2023 • Aurélien Devaux