version: '3.8' services: # Backend FastAPI avec support des permissions système backend: build: context: ./backend dockerfile: Dockerfile container_name: innotexboard-api restart: unless-stopped ports: - "8000:8000" volumes: # Socket Docker - permet au backend de gérer les conteneurs - /var/run/docker.sock:/var/run/docker.sock:ro # /proc et /sys - pour psutil et les stats système - /proc:/proc:ro - /sys:/sys:ro # Code source en développement - ./backend:/app environment: - SECRET_KEY=${SECRET_KEY:-your-super-secret-key-change-in-production} - FRONTEND_URL=http://localhost:3000 - ACCESS_TOKEN_EXPIRE_MINUTES=480 - PYTHONUNBUFFERED=1 # Nécessaire pour accéder à /proc et /sys privileged: false # Capacités Linux minimales pour lire le système cap_add: - SYS_ADMIN command: uvicorn main:app --host 0.0.0.0 --port 8000 --reload networks: - innotexboard # Pour les logs logging: driver: "json-file" options: max-size: "10m" max-file: "3" healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/health"] interval: 30s timeout: 10s retries: 3 start_period: 40s # Frontend Vue.js avec Vite frontend: build: context: ./frontend dockerfile: Dockerfile container_name: innotexboard-web restart: unless-stopped ports: - "3000:3000" volumes: # Code source en développement - ./frontend:/app # Éviter de mapper node_modules - /app/node_modules environment: - VITE_API_URL=http://localhost:8000/api/v1 command: npm run dev -- --host networks: - innotexboard depends_on: - backend # Pour les logs logging: driver: "json-file" options: max-size: "10m" max-file: "3" # (Optionnel) Nginx en reverse proxy pour la production nginx: image: nginx:alpine container_name: innotexboard-proxy restart: unless-stopped ports: - "80:80" - "443:443" volumes: # Configuration Nginx - ./nginx.conf:/etc/nginx/nginx.conf:ro # Certificats SSL (à générer) - ./certs:/etc/nginx/certs:ro networks: - innotexboard depends_on: - backend - frontend profiles: - production # Décommenter pour activer en prod: docker-compose --profile production up networks: innotexboard: driver: bridge # Usage: # Développement: docker-compose up # Production: docker-compose --profile production up # # Build only: docker-compose build # Down: docker-compose down # Logs: docker-compose logs -f backend # SSH to backend: docker-compose exec backend bash