diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..a09dcaf --- /dev/null +++ b/.env.example @@ -0,0 +1,6 @@ +NODE_PORT=3000 +NODE_ENV=dev +DB_HOST=localhost +DB_NAME=briques_db +DB_USER=briques_llm +DB_PASSWORD=briques_password_2025 \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..845959d --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +**/.env \ No newline at end of file diff --git a/back-end/.env.example b/back-end/.env.example new file mode 100644 index 0000000..8abc227 --- /dev/null +++ b/back-end/.env.example @@ -0,0 +1,7 @@ +NODE_ENV="dev" + +DB_HOST="postgres" +DB_NAME="briques" +DB_USER="briques_db" +DB_PASSWORD="briques_password" +DB_PORT=5432 \ No newline at end of file diff --git a/back-end/Dockerfile.back b/back-end/Dockerfile.back new file mode 100644 index 0000000..8b28269 --- /dev/null +++ b/back-end/Dockerfile.back @@ -0,0 +1,43 @@ +# Start from NodeJS image +FROM node:22-alpine + +# Workdir definition +WORKDIR /usr/src/back + +# Environment declaration variables +ARG NODE_ENV="dev" +ARG DB_HOST="postgres" +ARG DB_NAME="briques" +ARG DB_USER="briques_db" +ARG DB_PASSWORD="briques_password" +ARG DB_PORT=5432 + +COPY package.json ./ + +RUN npm install + +RUN npm install -g pm2 + +# Copy sources +COPY . . + +# Setting up environment +RUN echo "NODE_ENV=${NODE_ENV}" > .env \ + && echo "DB_HOST=${DB_HOST}" >> .env \ + && echo "DB_NAME=${DB_NAME}" >> .env \ + && echo "DB_USER=${DB_USER}" >> .env \ + && echo "DB_PORT=${DB_PORT}" >> .env \ + && echo "DB_PASSWORD=${DB_PASSWORD}" >> .env + +# Compilation des fichiers TypeScript +RUN npm run build + +# Review permissions +RUN chown -R node:node ./ +RUN chmod -R u=rwx,g=,o= ./ + +# Expose port +EXPOSE 3000 + +# Start app +CMD ["pm2", "start", "dist/app.js", "--no-daemon"] diff --git a/back-end/nodemon.json b/back-end/nodemon.json new file mode 100644 index 0000000..75d1e63 --- /dev/null +++ b/back-end/nodemon.json @@ -0,0 +1,5 @@ +{ + "watch": ["src"], + "ext": "ts,json", + "exec": "ts-node ./src/index.ts" +} diff --git a/back-end/package.json b/back-end/package.json index e40a506..c1bf0c6 100644 --- a/back-end/package.json +++ b/back-end/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "main": "dist/app.js", "scripts": { + "startonly": "node dist/app.js", "start": "tsc && node dist/app.js", "build": "tsc", "test": "echo \"Error: no test specified\" && exit 1" diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..1c81c6a --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,32 @@ +services: + database: + hostname: database + container_name: briques_postgres + image: postgres + restart: always + environment: + - POSTGRES_DB=${DB_NAME} + - POSTGRES_USER=${DB_USER} + - POSTGRES_PASSWORD=${DB_PASSWORD} + volumes: + - database:/var/lib/postgresql/data + back: + hostname: back + container_name: briques_back + build: + context: ./back-end + dockerfile: Dockerfile.back + args: + - NODE_ENV=${NODE_ENV} + - DB_HOST=database + - DB_NAME=${DB_NAME} + - DB_USER=${DB_USER} + - DB_PORT=5432 + - DB_PASSWORD=${DB_PASSWORD} + ports: + - '${NODE_PORT}:3000' + depends_on: + - database + +volumes: + database: