From 57028715688fadbfb7002ac00454b94a3722445b Mon Sep 17 00:00:00 2001
From: Anthony Geourjon <anthony.geourjon@tetras-libre.fr>
Date: Fri, 2 Feb 2024 13:24:11 +0100
Subject: [PATCH] Pakcahe everything in docker-compose

---
 .env.sample          | 16 ++++++++++++++++
 docker-compose.yml   | 11 +++++++++++
 docker/Dockerfile    | 19 ++++++++-----------
 docker/entrypoint.sh | 15 +++++++++++++++
 docker/ports.yml     |  6 ++++++
 server.js            |  2 +-
 6 files changed, 57 insertions(+), 12 deletions(-)
 create mode 100644 .env.sample
 create mode 100644 docker-compose.yml
 create mode 100755 docker/entrypoint.sh
 create mode 100644 docker/ports.yml

diff --git a/.env.sample b/.env.sample
new file mode 100644
index 0000000..679f533
--- /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 0000000..2baf089
--- /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 29162a4..052f0ab 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 0000000..4f5feaa
--- /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 0000000..c7334bd
--- /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 9817860..56141f0 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({
-- 
GitLab