97 lines
4.8 KiB
YAML
97 lines
4.8 KiB
YAML
# =============================================================================
|
|
# docker-compose.yaml — Déploiement Coolify
|
|
# -----------------------------------------------------------------------------
|
|
# Utiliser ce fichier UNIQUEMENT si le déploiement Coolify est configuré en
|
|
# type « Docker Compose ». En type « Dockerfile », Coolify génère lui-même la
|
|
# configuration et ce fichier est ignoré.
|
|
#
|
|
# Voir DEPLOIEMENT-COOLIFY.md pour le choix entre les deux méthodes.
|
|
# =============================================================================
|
|
|
|
services:
|
|
site:
|
|
build:
|
|
context: .
|
|
dockerfile: Dockerfile
|
|
|
|
# Redémarrage automatique après un reboot du serveur ou un plantage.
|
|
restart: unless-stopped
|
|
|
|
# -------------------------------------------------------------------------
|
|
# RÉSEAUX
|
|
# -------------------------------------------------------------------------
|
|
# Le réseau « coolify » est celui où vit Traefik. Un conteneur qui n'y est
|
|
# pas rattaché est invisible pour le reverse proxy : Traefik affiche alors
|
|
# une 404, alors que le conteneur tourne parfaitement.
|
|
#
|
|
# C'est la panne la plus fréquente sur Coolify, et elle est trompeuse
|
|
# parce que les journaux du conteneur sont vides — la requête ne
|
|
# l'atteint jamais.
|
|
networks:
|
|
- coolify
|
|
|
|
# -------------------------------------------------------------------------
|
|
# ÉTIQUETTES TRAEFIK
|
|
# -------------------------------------------------------------------------
|
|
labels:
|
|
- traefik.enable=true
|
|
|
|
# --- Routeur HTTPS ---
|
|
- traefik.http.routers.courcellematthi.rule=Host(`www.courcellematthi.eu`)
|
|
- traefik.http.routers.courcellematthi.entrypoints=https
|
|
- traefik.http.routers.courcellematthi.tls=true
|
|
- traefik.http.routers.courcellematthi.tls.certresolver=letsencrypt
|
|
- traefik.http.routers.courcellematthi.service=courcellematthi
|
|
|
|
# --- Port du service ---
|
|
# DÉCLARATION OBLIGATOIRE. Traefik ne devine le port que si le conteneur
|
|
# n'en expose qu'un seul, et cette détection échoue régulièrement.
|
|
# Sans cette ligne : « 502 Bad Gateway » ou « service not found ».
|
|
- traefik.http.services.courcellematthi.loadbalancer.server.port=80
|
|
|
|
# --- Redirection du domaine nu vers www ---
|
|
# Doit correspondre au rel="canonical" du HTML, sous peine de contenu
|
|
# dupliqué aux yeux des moteurs de recherche.
|
|
- traefik.http.routers.courcellematthi-apex.rule=Host(`courcellematthi.eu`)
|
|
- traefik.http.routers.courcellematthi-apex.entrypoints=https
|
|
- traefik.http.routers.courcellematthi-apex.tls=true
|
|
- traefik.http.routers.courcellematthi-apex.tls.certresolver=letsencrypt
|
|
- traefik.http.routers.courcellematthi-apex.middlewares=courcellematthi-towww
|
|
- traefik.http.routers.courcellematthi-apex.service=courcellematthi
|
|
- traefik.http.middlewares.courcellematthi-towww.redirectregex.regex=^https://courcellematthi\.eu/(.*)
|
|
- traefik.http.middlewares.courcellematthi-towww.redirectregex.replacement=https://www.courcellematthi.eu/$${1}
|
|
- traefik.http.middlewares.courcellematthi-towww.redirectregex.permanent=true
|
|
|
|
# --- HSTS ---
|
|
# Émis par Traefik, qui termine le TLS, et non par Nginx dans le conteneur.
|
|
#
|
|
# ATTENTION : à n'activer qu'une fois le HTTPS confirmé fonctionnel.
|
|
# Un HSTS émis par erreur rend le domaine inaccessible en HTTP pendant
|
|
# deux ans côté navigateur, sans possibilité d'annulation serveur.
|
|
# Commencer avec max-age=300 pour valider, puis passer à 63072000.
|
|
- traefik.http.routers.courcellematthi.middlewares=courcellematthi-hsts
|
|
- traefik.http.middlewares.courcellematthi-hsts.headers.stsSeconds=300
|
|
- traefik.http.middlewares.courcellematthi-hsts.headers.stsIncludeSubdomains=true
|
|
- traefik.http.middlewares.courcellematthi-hsts.headers.stsPreload=true
|
|
- traefik.http.middlewares.courcellematthi-hsts.headers.forceSTSHeader=true
|
|
|
|
# -------------------------------------------------------------------------
|
|
# SONDE DE SANTÉ
|
|
# Redondante avec celle du Dockerfile, mais explicite ici pour que l'état
|
|
# remonte correctement dans l'interface Coolify.
|
|
# -------------------------------------------------------------------------
|
|
healthcheck:
|
|
test: ["CMD", "wget", "--quiet", "--tries=1", "--spider", "http://localhost/healthz"]
|
|
interval: 30s
|
|
timeout: 3s
|
|
retries: 3
|
|
start_period: 5s
|
|
|
|
# -----------------------------------------------------------------------------
|
|
# Le réseau « coolify » est créé par Coolify lui-même : on le déclare externe
|
|
# pour s'y rattacher sans tenter de le recréer.
|
|
# -----------------------------------------------------------------------------
|
|
networks:
|
|
coolify:
|
|
external: true
|