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