version: '3.8' # ============================================================ # Smart Parking v2.0 — Docker Compose # Services : MariaDB + App Node.js + Mosquitto MQTT # ============================================================ services: # ── Base de données MariaDB ──────────────────────────────── db: image: mariadb:10.11 container_name: smartparking-db restart: always environment: MARIADB_ROOT_PASSWORD: rootpassword # ⚠️ À changer en production MARIADB_DATABASE: smartparking MARIADB_USER: smartparking_user MARIADB_PASSWORD: smartparking_pass # ⚠️ À changer en production volumes: - db_data:/var/lib/mysql - ./init.sql:/docker-entrypoint-initdb.d/init.sql networks: - smartparking-network healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost"] timeout: 10s retries: 5 # ── Broker MQTT Mosquitto ────────────────────────────────── # Si vous avez déjà Mosquitto installé directement sur le Pi # (pas dans Docker), commentez ce bloc et mettez # MQTT_HOST=localhost dans la section "app" ci-dessous. mqtt: image: eclipse-mosquitto:2 container_name: smartparking-mqtt restart: always ports: - "1883:1883" # Port MQTT (Arduino se connecte ici) - "9001:9001" # Port WebSocket (optionnel) volumes: - ./mosquitto/config/mosquitto.conf:/mosquitto/config/mosquitto.conf - mosquitto_data:/mosquitto/data - mosquitto_log:/mosquitto/log networks: - smartparking-network # ── Application Node.js ──────────────────────────────────── app: build: . container_name: smartparking-app restart: always ports: - "3000:3000" depends_on: db: condition: service_healthy mqtt: condition: service_started environment: # Base de données DB_HOST: db DB_PORT: 3306 DB_USER: smartparking_user DB_PASSWORD: smartparking_pass DB_NAME: smartparking # JWT JWT_SECRET: ${JWT_SECRET:-une_chaine_tres_longue_et_secrete_changez_moi} # MQTT — utiliser "mqtt" si Mosquitto est dans Docker # utiliser "localhost" si Mosquitto est installé directement sur le Pi MQTT_HOST: mqtt MQTT_PORT: 1883 # Environnement NODE_ENV: production PORT: 3000 networks: - smartparking-network volumes: db_data: mosquitto_data: mosquitto_log: networks: smartparking-network: