# =============================================================================
#  LA BASE DE DEVELOPPEMENT
# =============================================================================
#
#  POURQUOI UN CONTENEUR, ET NON UNE INSTALLATION.
#
#  La machine n'a que MySQL Workbench — un CLIENT, sans serveur. Installer
#  MariaDB nativement demanderait les droits d'administrateur, laisserait un
#  service en fond, et rendrait difficile de repartir d'une base propre : or
#  c'est precisement ce qu'on veut pouvoir faire dix fois par jour.
#
#  « docker compose down -v » efface tout et l'on recommence.
#
#  POURQUOI MARIADB 10.6 ET NON MYSQL.
#
#  C'est ce que sert OVH mutualise. Les deux moteurs divergent sur des points
#  que ce projet touche : le mode strict, la longueur des index, le traitement
#  des dates nulles. Tester sur l'un pour deployer sur l'autre reviendrait a
#  verifier autre chose que ce qu'on livre.
# =============================================================================

services:
  base:
    image: mariadb:10.6
    container_name: conciergerie-base
    restart: unless-stopped
    environment:
      MARIADB_ROOT_PASSWORD: conciergerie-local
      MARIADB_DATABASE: conciergerie
      MARIADB_USER: conciergerie
      MARIADB_PASSWORD: conciergerie-local
    ports:
      # 3307 ET NON 3306 : si une instance locale est installee un jour, les
      # deux cohabitent au lieu de se disputer le port — et l'on ne se demande
      # pas laquelle on vient de vider.
      - "3307:3306"
    command:
      # LE MEME MODE STRICT QUE CELUI QUE Db::pdo() POSE A CHAQUE SESSION.
      # Sans lui, un INSERT trop long serait tronque en silence ici et
      # refuse chez l'hebergeur : le defaut n'apparaitrait qu'en production.
      - --sql-mode=STRICT_ALL_TABLES,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_unicode_ci
    healthcheck:
      # Le lanceur attend CE controle, et non un delai fixe : un « sleep 10 »
      # est toujours soit trop court sur une machine chargee, soit du temps
      # perdu sur une machine libre.
      test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
      interval: 3s
      timeout: 5s
      retries: 20
    volumes:
      - donnees:/var/lib/mysql

volumes:
  donnees:
