From 4fee4c4eb95c8d122aed4785e83b8b3aae13de6f Mon Sep 17 00:00:00 2001 From: gauvainboiche Date: Sat, 1 Aug 2026 17:45:42 +0200 Subject: [PATCH] feat: Creating Docker deployment --- .dockerignore | 6 ++++++ Dockerfile | 27 +++++++++++++++++++++++++++ backend/server.js | 4 +++- docker-compose.yml | 12 ++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..75742ca --- /dev/null +++ b/.dockerignore @@ -0,0 +1,6 @@ +node_modules +npm-debug.log +.git +.gitignore +.DS_Store +README.md \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..7aaf2e7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,27 @@ +# Image de base légère Node.js (version LTS) +FROM node:20-alpine + +# Définition du répertoire de travail +WORKDIR /app + +# Copie des manifests de dépendances en attribuant la propriété à l'utilisateur 'node' +COPY --chown=node:node backend/package*.json ./backend/ + +# Installation propre des dépendances de production +RUN cd backend && npm ci --omit=dev + +# Copie de l'ensemble du projet avec la bonne propriété utilisateur +COPY --chown=node:node . . + +# Passage à l'utilisateur non-privilégié 'node' +USER node + +# Variables d'environnement +ENV NODE_ENV=production +ENV PORT=3000 + +# Exposition du port (3000 est > 1024, donc autorisé sans privilèges root) +EXPOSE 3000 + +# Démarrage du serveur Node.js +CMD ["node", "backend/server.js"] \ No newline at end of file diff --git a/backend/server.js b/backend/server.js index 0c92d0d..46a42f5 100644 --- a/backend/server.js +++ b/backend/server.js @@ -7,8 +7,10 @@ const PORT = process.env.PORT || 3000; app.use(cors()); app.use(express.json()); +// Servir le fichier pkCore.js situé à la racine +app.use('/pkCore.js', express.static(path.join(__dirname, '../pkCore.js'))); -// Service des fichiers statiques (Frontend) +// Servir les fichiers statiques du dossier frontend app.use(express.static(path.join(__dirname, '../frontend'))); // Base de données temporaire en mémoire pour les sauvegardes diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..a909065 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.8' + +services: + keta-pk: + build: . + container_name: keta-pk-web + ports: + - "3000:3000" + restart: unless-stopped + environment: + - NODE_ENV=production + - PORT=3000 \ No newline at end of file