From dce4482e46c85d7f64e52c0b6e83f766c7258bc9 Mon Sep 17 00:00:00 2001 From: Pierre Berthe Date: Fri, 12 Apr 2024 12:14:59 +0200 Subject: [PATCH] =?UTF-8?q?Ajouter=20les=20fichiers=20de=20configuration?= =?UTF-8?q?=20pour=20VS=20Code=20et=20le=20fichier=20.gitignore,=20et=20me?= =?UTF-8?q?ttre=20=C3=A0=20jour=20le=20Dockerfile,=20requirements.txt,=20l?= =?UTF-8?q?es=20imports=20dans=20models.py=20et=20security.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .dockerignore | 27 +++++++++++++++++++++++++++ .vscode/launch.json | 19 +++++++++++++++++++ .vscode/tasks.json | 25 +++++++++++++++++++++++++ Dockerfile | 36 +++++++++++++++++++++++++----------- docker-compose.debug.yml | 12 ++++++++++++ docker-compose.yml | 10 ++++++++++ 6 files changed, 118 insertions(+), 11 deletions(-) create mode 100644 .dockerignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/tasks.json create mode 100644 docker-compose.debug.yml create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..0b1e1e7 --- /dev/null +++ b/.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/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..cfca146 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,19 @@ +{ + "configurations": [ + { + "name": "Docker: Python - Fastapi", + "type": "docker", + "request": "launch", + "preLaunchTask": "docker-run: debug", + "python": { + "pathMappings": [ + { + "localRoot": "${workspaceFolder}", + "remoteRoot": "/app" + } + ], + "projectType": "fastapi" + } + } + ] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..130f6f9 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,25 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "type": "docker-build", + "label": "docker-build", + "platform": "python", + "dockerBuild": { + "tag": "pytest:latest", + "dockerfile": "${workspaceFolder}/Dockerfile", + "context": "${workspaceFolder}", + "pull": true + } + }, + { + "type": "docker-run", + "label": "docker-run: debug", + "dependsOn": ["docker-build"], + "python": { + "args": ["main:app", "--host", "0.0.0.0", "--port", "8000"], + "module": "uvicorn" + } + } + ] +} diff --git a/Dockerfile b/Dockerfile index bc39015..16f81c7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,11 +1,25 @@ -FROM python:3.12-bookworm - -WORKDIR /app - -COPY ./requirements.txt /app/requirements.txt - -RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt - -COPY . /app - -CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "80"] \ No newline at end of file +# For more information, please refer to https://aka.ms/vscode-docker-python +FROM python:3.12-slim + +EXPOSE 8000 + +# 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 + +# Creates a non-root user with an explicit UID and adds permission to access the /app folder +# For more info, please refer to https://aka.ms/vscode-docker-python-configure-containers +RUN adduser -u 5678 --disabled-password --gecos "" appuser && chown -R appuser /app +USER appuser + +# During debugging, this entry point will be overridden. For more information, please refer to https://aka.ms/vscode-docker-python-debug +CMD ["gunicorn", "--bind", "0.0.0.0:8000", "-k", "uvicorn.workers.UvicornWorker", "main:app"] diff --git a/docker-compose.debug.yml b/docker-compose.debug.yml new file mode 100644 index 0000000..c1a3d3b --- /dev/null +++ b/docker-compose.debug.yml @@ -0,0 +1,12 @@ +version: '3.4' + +services: + pytest: + image: pytest + build: + context: . + dockerfile: ./Dockerfile + command: ["sh", "-c", "pip install debugpy -t /tmp && python /tmp/debugpy --wait-for-client --listen 0.0.0.0:5678 -m uvicorn main:app --host 0.0.0.0 --port 8000"] + ports: + - 8000:8000 + - 5678:5678 diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..43a75ca --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,10 @@ +version: '3.4' + +services: + pytest: + image: pytest + build: + context: . + dockerfile: ./Dockerfile + ports: + - 8000:8000