version: "3.9" services: #Base de donnée mysql de la borne sur laquelle est stockée tous les avis et les stats db: image: mysql:latest container_name: db expose: - 3306 volumes: - ./db:/docker-entrypoint-initdb.d restart: always healthcheck: test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost", "-uroot"] # Command to check health. interval: 5s # Interval between health checks. timeout: 5s # Timeout for each health checking. retries: 20 # Hou many times retries. start_period: 10s # Estimated time to boot. environment: MYSQL_ROOT_PASSWORD: telereview MYSQL_DATABASE: telereview #Interface d'aministration pour la bdd phpmyadmin: image: phpmyadmin:latest restart: always container_name: phpmyadmin depends_on: db: condition: service_healthy environment: PMA_ARBITRARY: 1 PMA_HOST: db PMA_USER: root PMA_PASSWORD: telereview ports: - 8000:80 #API de gestion des avis, permet d'ajouter ou de récuperer des avis ou les stats sur les avis par des requêtes HTTP reviews_api: container_name: reviews_api ports: - 8080:8080 environment: - NODE_ENV=production - DB_USER=root - DB_PASSWORD=telereview - DB_HOST=db - DB_NAME=telereview - PORT=8080 depends_on: db: condition: service_healthy build: ./reviews_api restart: always #Serveur web de l'interface de la borne interface_borne: image: httpd:latest volumes: - ./interface_borne:/usr/local/apache2/htdocs/ container_name: interface_borne ports: - 8888:80 #Serveur web de l'interface admin interface_admin: image: httpd:latest volumes: - ./interface_admin:/usr/local/apache2/htdocs/ container_name: interface_admin ports: - 80:80 #Backend de la borne : scripts pythons de reconnaissances video et audio #Envoient les infos a l'interface de la borne par websocket pour mettre a jour l'interface rapidement #Met a jour les avis en faisant des requêtes a l'API backend_reconnaissance: build: ./backend_reconnaissance container_name: backend_reconnaissance restart: always devices: - /dev/video3:/dev/video0 environment: - PORT=5000 - HOST=backend_reconnaissance ports: #Ce container est le serveur websocker dont le client est l'interface de la borne qui tourne dans le navigateur - 5000:5000 video_loopback: build: ./video_loopback container_name: video_loopback restart: always devices: - /dev/video0:/dev/video0 - /dev/video2:/dev/video1 - /dev/video3:/dev/video2