version: '3.8' services: mysql: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-rootpass} MYSQL_DATABASE: ${MYSQL_DATABASE:-gestion_locative} MYSQL_USER: ${MYSQL_USER:-gluser} MYSQL_PASSWORD: ${MYSQL_PASSWORD:-glpass} volumes: - mysql_data:/var/lib/mysql ports: - "3306:3306" healthcheck: test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD:-rootpass}"] interval: 10s timeout: 5s retries: 10 restart: unless-stopped backend: build: context: ./backend dockerfile: Dockerfile ports: - "3001:3001" volumes: - ./backend/uploads:/app/uploads environment: - NODE_ENV=production - JWT_SECRET=${JWT_SECRET:-change_this_secret_in_production} - DB_HOST=${DB_HOST:-mysql} - DB_PORT=${DB_PORT:-3306} - DB_USER=${DB_USER:-gluser} - DB_PASSWORD=${DB_PASSWORD:-glpass} - DB_NAME=${DB_NAME:-gestion_locative} depends_on: mysql: condition: service_healthy restart: unless-stopped frontend: build: context: ./frontend dockerfile: Dockerfile args: VITE_API_URL: http://localhost:3001 ports: - "3000:80" depends_on: - backend restart: unless-stopped volumes: mysql_data: