From 383b3105d978bb71e1c78d4131f6107daf728cc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A8ve=20Caillault?= Date: Fri, 12 Dec 2025 22:23:47 +0100 Subject: [PATCH] Initialisation de Docker. --- .env.example | 16 +++++++++++++ .gitignore | 3 +++ certs/letsencrypt/.gitkeep | 0 docker-compose.yml | 46 ++++++++++++++++++++++++++++++++++++++ tls.yaml | 4 ++++ 5 files changed, 69 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 certs/letsencrypt/.gitkeep create mode 100644 docker-compose.yml create mode 100644 tls.yaml diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..1d8e7a6 --- /dev/null +++ b/.env.example @@ -0,0 +1,16 @@ +# À définir pour éviter les problèmes sur les multi-projets Docker +COMPOSE_PROJECT_NAME="" + +COMPOSE_FILE=docker-compose.yml + +# Traefik +TRAEFIK_IMAGE=traefik:v3.6 + +# URL d'accès au dashboard de Traefik +TRAEFIK_URL="" + +# Basic Auth pour le dashboard +TRAEFIK_HTPASSWD="" + +# Email pour Let's Encrypt +LETSENCRYPT_EMAIL="" diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..101a344 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.env +certs/*.crt +certs/*.key diff --git a/certs/letsencrypt/.gitkeep b/certs/letsencrypt/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5b1574b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,46 @@ +networks: + frontend: + external: true + name: frontend + backend: + +services: + + # Configuration de Traefik + traefik: + image: ${TRAEFIK_IMAGE} + container_name: traefik + ports: + - "80:80" + - "443:443" + command: + - "--api.dashboard=true" + - "--api.insecure=false" + # + - "--providers.docker=true" + - "--providers.docker.exposedbydefault=false" + - "--providers.docker.network=frontend" + - "--providers.file.filename=./tls.yaml" + # + - "--entrypoints.web.address=:80" + - "--entrypoints.web.http.redirections.entrypoint.to=websecure" + - "--entrypoints.web.http.redirections.entrypoint.scheme=https" + - "--entrypoints.web.http.redirections.entrypoint.permanent=true" + - "--entrypoints.websecure.address=:443" + - "--entrypoints.websecure.http.tls=true" + # + labels: + - "traefik.enable=true" + # + - "traefik.http.routers.traefik_dashboard.rule=Host(`${TRAEFIK_URL}`)" + - "traefik.http.routers.traefik_dashboard.entrypoints=websecure" + - "traefik.http.routers.traefik_dashboard.service=api@internal" + - "traefik.http.routers.traefik_dashboard.tls=true" + - "traefik.http.middlewares.traefik_dashboard-auth.basicauth.users=${TRAEFIK_HTPASSWD}" + - "traefik.http.routers.traefik_dashboard.middlewares=traefik_dashboard-auth@docker" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - ./certs:/certs:ro + networks: + - frontend + - backend diff --git a/tls.yaml b/tls.yaml new file mode 100644 index 0000000..ef0863d --- /dev/null +++ b/tls.yaml @@ -0,0 +1,4 @@ +tls: + certificates: + - certFile: /certs/localhost.crt + - keyFile: /certs/localhost.key