diff --git a/.env.sample b/.env.sample
new file mode 100644
index 0000000000000000000000000000000000000000..679f53379ddcabc7af4ab79aac50a437e0672b90
--- /dev/null
+++ b/.env.sample
@@ -0,0 +1,16 @@
+# Use this variable to add configurations :
+# docker-compose.yml : required
+# ports.yml : bind the port 300 to the $PORT variable
+# traefik.yml : add traefik configurations
+COMPOSE_FILE=docker-compose.yml:docker/ports.yml
+#COMPOSE_FILE=docker-compose.yml:docker/ports.yml:docker/traefik.yml
+
+# Choose between "dev" and "prod"
+ENV=dev
+# If you use docker/ports.yml
+PORT=3000
+# If you use docker/traefik.yml
+# A unique name for traefik router
+NAME=
+# A traefik host rule ex `domain.FQDN` or `domain1.FQDN`,`domain2.FQDN`
+HOST=`domain.fqdn`
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 0000000000000000000000000000000000000000..2baf0895fc5358d6d35d453d27b890bc021c899a
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,11 @@
+version: "3"
+
+services:
+  front:
+    build:
+      context: "docker/"
+    volumes:
+      - ${PWD}:/app
+    environment:
+      ENV:
+
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 29162a464c302701efc592d166641719463ad83e..052f0ab04558c9c6779bb0044802ecb634c5b770 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -1,21 +1,18 @@
 # From base image node
 FROM node:16
 
-# Create app directory
-RUN mkdir -p /usr/src/app
-WORKDIR /usr/src/app
+VOLUME /app
 
-# Copying all the files from your file system to container file system
-COPY package.json .
+WORKDIR /app
 
-# Install all dependencies
-RUN npm install
+RUN ls -la
 
-# Copy other files too
-COPY ./ .
+COPY entrypoint.sh /
 
 # Expose the port
-EXPOSE 3030
+EXPOSE 3000
+
+USER node
 
 # Command to run app when intantiate an image
-CMD ["npm","start"]
+ENTRYPOINT ["/entrypoint.sh"]
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
new file mode 100755
index 0000000000000000000000000000000000000000..4f5feaa5d43f6f7dcfbe0b9e69670ec5b78046c4
--- /dev/null
+++ b/docker/entrypoint.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+npm install
+./cli post_install
+
+if [ "$ENV" == "prod" ]; then
+   cmd="npm start"
+else
+    cmd="npm start"
+fi
+
+if [ ! -z "$1" ];  then
+    cmd=$@
+fi
+exec $cmd
diff --git a/docker/ports.yml b/docker/ports.yml
new file mode 100644
index 0000000000000000000000000000000000000000..c7334bd2295bc0f9a0e163da83cb5a99709d573f
--- /dev/null
+++ b/docker/ports.yml
@@ -0,0 +1,6 @@
+version: "3"
+
+services:
+  front:
+    ports:
+      - ${PORT}:3000
diff --git a/server.js b/server.js
index 9817860f4fdafe13c09c68804bae056455e97da4..56141f01350f28d0a352a33ed14471adffeab4c3 100644
--- a/server.js
+++ b/server.js
@@ -1,7 +1,7 @@
 const express = require('express');
 const multer = require('multer');
 const app = express();
-const port = 3001;
+const port = 3000;
 app.use('/static', express.static('uploads'));
 
 const storage = multer.diskStorage({