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 - ./db/dbdata:/var/lib/mysql 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_ROOT_HOST: '%' 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 expose: - 8080 ports: - 8080:8080 environment: - NODE_ENV=production - DB_USER=root - DB_PASSWORD=telereview - DB_HOST=db - DB_NAME=telereview - PORT=8080 - ANALYZER_HOST=analyseur_texte - ANALYZER_PORT=2000 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: build: ./interface_admin ports: - 800:3000 # image: httpd:latest # volumes: # - ./interface_admin/out:/usr/local/apache2/htdocs/ # container_name: interface_admin # ports: # - 800:80 #Formulaire de retour d'avis formulaire: image: httpd:latest volumes: - ./formulaire:/usr/local/apache2/htdocs/ container_name: formulaire ports: - 80:80 #Serveur d'analyse de texte analyseur_texte: build: ./analyseur_texte container_name: analyseur_texte environment: - PORT=2000 ports: - 2000:2000 restart: always # #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 # - /dev/snd:/dev/snd # environment: # - PORT=5000 # - HOST=backend_reconnaissance # - API_HOST=reviews_api # - API_PORT=8080 # - CAMERA_ID=0 # 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