feat: intégration Fabio/Consul/Registrator + TLS acme.sh

docker-compose.business.yml:
- Suppression version: obsolete et ports: (Fabio gère le routing)
- Ajout labels SERVICE_3000_* pour Registrator/Consul/Fabio
- Ajout LETSENCRYPT_HOST pour sonic-acme-1
- Ajout réseau sonic (externe, partagé avec la stack)

.woodpecker.yml:
- Ajout write-env (RADAR_DOMAIN depuis secret, séparé car from_secret + volumes incompatibles)
- Ajout TLS acme.sh dans deploy (idempotent, exit 2 = skip)
- Healthcheck sur https://RADAR_DOMAIN (100s max)

Secret Woodpecker à créer : radar_domain

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
syoul
2026-03-19 18:29:39 +01:00
parent 002764ea9a
commit fa0aa808ac
2 changed files with 61 additions and 19 deletions

View File

@@ -1,26 +1,30 @@
version: '3.8'
services:
radar-business:
container_name: laplank-radar-technolologique
build:
context: .
dockerfile: Dockerfile.business
pull: true # Force le pull de l'image de base pour éviter le cache
pull: true
args:
BUILD_DATE: "${BUILD_DATE:-$(date +%s)}"
BUILD_VERSION: "${BUILD_VERSION:-dev}"
CACHE_BUST: "${CACHE_BUST:-$(date +%s%N)}" # Nanosecondes pour garantir l'unicité et forcer l'invalidation
# Note: no_cache n'est pas supporté dans docker-compose
# Pour forcer le rebuild sans cache dans Portainer, utilisez l'option "Rebuild" avec "No cache" dans l'interface
# Si vous utilisez une image pré-bâtie, décommentez image et commentez build
# image: votre-registre/laplank-radar-business:latest
CACHE_BUST: "${CACHE_BUST:-$(date +%s%N)}"
restart: unless-stopped
ports:
- "3006:3000" # Mappe le port 3006 de l'hôte vers le port 3000 du conteneur
environment:
- NODE_ENV=production
# Optionnel : Persistance des logs si nécessaire
# volumes:
# - ./logs:/app/logs
labels:
# Registrator lit l'IP du conteneur depuis le reseau "sonic" (-useIpFromNetwork sonic)
# et enregistre le service dans Consul avec le tag urlprefix- -> Fabio route vers ce service
- SERVICE_3000_NAME=laplank-radar-business
- SERVICE_3000_TAGS=urlprefix-${RADAR_DOMAIN}/
- SERVICE_3000_CHECK_TCP=true
# sonic-acme-1 (acme-companion) emet le cert TLS et le copie dans /host/certs/
# Fabio le detecte automatiquement par SNI pour HTTPS
- LETSENCRYPT_HOST=${RADAR_DOMAIN}
networks:
- sonic
networks:
sonic:
# Reseau externe existant sur le serveur (partage avec Registrator/Consul/Fabio)
external: true