container docker pour le backend python pret

This commit is contained in:
2023-01-11 23:31:37 +01:00
parent e1810554a6
commit 01eb7976a2
9 changed files with 83 additions and 30 deletions

15
.vscode/launch.json vendored
View File

@@ -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"
}
}
]
}

View File

@@ -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)).

View File

@@ -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

18
code/backend/Dockerfile Normal file
View File

@@ -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"]

View File

@@ -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

View File

@@ -0,0 +1 @@
websockets

View File

@@ -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
@@ -18,6 +20,7 @@ services:
MYSQL_ROOT_PASSWORD: telereview
MYSQL_DATABASE: telereview
#Interface d'aministration pour la bdd
phpmyadmin:
image: phpmyadmin:latest
restart: always
@@ -32,6 +35,7 @@ services:
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:
@@ -49,11 +53,23 @@ services:
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

View File

@@ -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);

View File

@@ -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"]