From 01eb7976a293cd98e438fe08e32e03cca9b679f9 Mon Sep 17 00:00:00 2001 From: Quentin Roussel Date: Wed, 11 Jan 2023 23:31:37 +0100 Subject: [PATCH] container docker pour le backend python pret --- .vscode/launch.json | 15 +++++++++++ README.md | 23 ---------------- code/backend/.dockerignore | 27 +++++++++++++++++++ code/backend/Dockerfile | 18 +++++++++++++ .../main.py} | 3 +-- code/backend/requirements.txt | 1 + code/docker-compose.yaml | 24 ++++++++++++++--- code/interface_borne/assets/js/main.js | 1 + code/reviews_api/Dockerfile | 1 - 9 files changed, 83 insertions(+), 30 deletions(-) delete mode 100644 README.md create mode 100644 code/backend/.dockerignore create mode 100644 code/backend/Dockerfile rename code/{detection_image/exemple_overlay_camera.py => backend/main.py} (90%) create mode 100644 code/backend/requirements.txt diff --git a/.vscode/launch.json b/.vscode/launch.json index e2100fe..166fcda 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -10,6 +10,21 @@ "package": "${workspaceFolder}/code/reviews_api/package.json", "localRoot": "${workspaceFolder}/code/reviews_api" } + }, + { + "name": "Docker: Python - General", + "type": "docker", + "request": "launch", + "preLaunchTask": "docker-run: debug", + "python": { + "pathMappings": [ + { + "localRoot": "${workspaceFolder}", + "remoteRoot": "/app" + } + ], + "projectType": "general" + } } ] } \ No newline at end of file diff --git a/README.md b/README.md deleted file mode 100644 index 1fed8c7..0000000 --- a/README.md +++ /dev/null @@ -1,23 +0,0 @@ -Ceci est votre dépôt pour le projet PACT. - -Vous **DEVEZ** modifier ce fichier (`README.md`) et créer tous les -répertoires et fichiers dont vous aurez besoin pour votre projet. - -# Important, le rapport d'avancement - -Le répertoire `rapport` contient un squelette pour votre rapporte d'avancement. -Ce répertoire **ne doit pas être renommé** ni le fichier `README.adoc` qu'il contient. -Le fichier `README.adoc` est le point d'entrée du rapport. - -Il est rédigé en utilisant le langage [**AsciiDoc**](http://asciidoc.org/). -La syntaxe est supportée par GitLab qui le formatera correctement dans l'interface Web. - -Le document final sera généré en utilisant l'outil [Asciidoctor](http://asciidoctor.org/) qui supporte les mêmes extensions que GitLab (pour les équations par exemple). -Un résumé de la syntaxe supportée est accessible [ici](http://asciidoctor.org/docs/asciidoc-syntax-quick-reference/). - -Vous pouvez éditer les différents fichiers en utilisant *votre éditeur de texte favori*. -Si vous n'en avez pas, vous pouvez, par exemple utiliser: - -- [**Visual Studio Code**](https://code.visualstudio.com/) avec l'extension [AsciiDoc](https://marketplace.visualstudio.com/items?itemName=asciidoctor.asciidoctor-vscode) qui ajoute coloration syntaxique et rendu en temps réel. -- Ou bien sûr votre éditeur de text préféré **Sublim Text**, **Vim**, **Emacs**,… -- Une extension pour navigateur Web est aussi disponible pour visualiser le résultat ([**ici**](https://github.com/asciidoctor/asciidoctor-browser-extension)). diff --git a/code/backend/.dockerignore b/code/backend/.dockerignore new file mode 100644 index 0000000..0b1e1e7 --- /dev/null +++ b/code/backend/.dockerignore @@ -0,0 +1,27 @@ +**/__pycache__ +**/.venv +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/bin +**/charts +**/docker-compose* +**/compose* +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md diff --git a/code/backend/Dockerfile b/code/backend/Dockerfile new file mode 100644 index 0000000..3ee8a12 --- /dev/null +++ b/code/backend/Dockerfile @@ -0,0 +1,18 @@ +# For more information, please refer to https://aka.ms/vscode-docker-python +FROM python:3.8-slim + +# Keeps Python from generating .pyc files in the container +ENV PYTHONDONTWRITEBYTECODE=1 + +# Turns off buffering for easier container logging +ENV PYTHONUNBUFFERED=1 + +# Install pip requirements +COPY requirements.txt . +RUN python -m pip install -r requirements.txt + +WORKDIR /app +COPY . /app + +# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug +CMD ["python", "main.py"] diff --git a/code/detection_image/exemple_overlay_camera.py b/code/backend/main.py similarity index 90% rename from code/detection_image/exemple_overlay_camera.py rename to code/backend/main.py index 55d3062..6f4a74f 100644 --- a/code/detection_image/exemple_overlay_camera.py +++ b/code/backend/main.py @@ -1,11 +1,10 @@ import asyncio import json import websockets -import numpy as np import random class WebsocketServer: - def __init__(self,getEffects,port=5000,host="localhost") -> None: + def __init__(self,getEffects,port=5000,host="backend") -> None: self.host = host self.port = port self.getEffects = getEffects diff --git a/code/backend/requirements.txt b/code/backend/requirements.txt new file mode 100644 index 0000000..7a38911 --- /dev/null +++ b/code/backend/requirements.txt @@ -0,0 +1 @@ +websockets \ No newline at end of file diff --git a/code/docker-compose.yaml b/code/docker-compose.yaml index cf21243..84ba26a 100644 --- a/code/docker-compose.yaml +++ b/code/docker-compose.yaml @@ -1,5 +1,7 @@ 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 @@ -17,7 +19,8 @@ services: environment: MYSQL_ROOT_PASSWORD: telereview MYSQL_DATABASE: telereview - + + #Interface d'aministration pour la bdd phpmyadmin: image: phpmyadmin:latest restart: always @@ -31,7 +34,8 @@ services: 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: @@ -48,12 +52,24 @@ services: 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: - - 80:80 + - 8888:80 + + #Backend de la borne : scripts pythons de reconaissances 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: + build: ./backend + container_name: backend + restart: always + ports: + #Ce container est le serveur websocker et le client est l'interface de la borne qui tourne dans le navigateur + - 5000:5000 \ No newline at end of file diff --git a/code/interface_borne/assets/js/main.js b/code/interface_borne/assets/js/main.js index 274af74..39f1002 100644 --- a/code/interface_borne/assets/js/main.js +++ b/code/interface_borne/assets/js/main.js @@ -3,4 +3,5 @@ let client window.addEventListener("load", () => { cameraEditor = new CameraEditor(document.getElementById("canvas")); client = new WebsocketClient((effects) => { cameraEditor.setEffects(effects); }); + cameraEditor._frame(); }, false); diff --git a/code/reviews_api/Dockerfile b/code/reviews_api/Dockerfile index 2d6681a..5092e3f 100644 --- a/code/reviews_api/Dockerfile +++ b/code/reviews_api/Dockerfile @@ -3,7 +3,6 @@ WORKDIR /usr/src/app COPY ["package.json", "package-lock.json*", "npm-shrinkwrap.json*", "./"] RUN npm install --production --silent && mv node_modules ../ COPY . . -EXPOSE 8080 RUN chown -R node /usr/src/app USER node CMD ["node", "index.js"]