commit 383b3105d978bb71e1c78d4131f6107daf728cc8 Author: Stève Caillault Date: Fri Dec 12 22:23:47 2025 +0100 Initialisation de Docker. 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