Skip to content

mravily/ft_transcendance

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Table des contenues

About

Pour ce projet, nous avons choisies d'utiliser différent langage:

  • Angular pour le front-end native TypeScript qui ressemble a NestJs
  • NestJS pour le back-end (On y étais un peux obligées 😅)
  • Prisma pour simplifier la communication entre notre DB et NestJs
  • PostgresSQL comme base de données SQL
  • Docker comme environnement de dévelopement

Installation Frameworks

Docker

Il faudra installer la version Docker correspondante à votre OS, sans une installation correct l'environnement de ne fonctionnera pas.

Une fois l'installation de Docker terminer, il faut tester si tous fonctionne bien

docker version

NodeJs

NodeJs est le composant principale de tous les frameworks utilisé dans ce projet, il confère de nombreuses dépendances indispensable au bon fonctionnement et à la bonne communication entre les services.

Pour son installation il est préférable d'utiliser un package manager:

Nous avons choisis npm pour ce projet.

node -v
npm -v

NestJs

NestJS est le framework qui va nous permettre de récuperer les données dans notre DB PostgresSQL et de les envoyées sous formats http à notre front-end gérer par Angular

	npm i -g @nestjs/cli
	nest --version

Angular

Angular est un framework côté client, open source, basé sur TypeScript, et codirigé par l'équipe du projet « Angular » à Google et par une communauté de particuliers et de sociétés.

	npm i @angular/cli
	ng version

Prisma

Prisma est un ORM qui aide les développeurs d'applications à construire plus rapidement et à faire moins d'erreurs, grâce à son fichier de schéma, il peut générer automatiquement un client qui peut être utilisé dans votre code TypeScript pour interagir avec la base de données.

npm install prisma --save-dev

Il n'y a pas besoin d'installer PostgresSQL Docker s'occupera de sa 😉

Environnement de développement

Chaque containers sera build à partir des dépendances spécifier dans le fichier package*.json, dans certains cas cela peux créer des conflits lors du montage des images dockers ou lors de la communications des services.

Copie des fichiers

Dans l'éventualités ou vous auriez déjà implémenter des features coté client et serveur il serait dommage de repartir de zéro, afin d'éviter cela quelque manipulations sont à effectuer, rien de bien méchant je vous rassure 😁

Dans un premier temps il faut que votre root de votre dossier du projet ressemble à sa 👇🏽

root_tree

Backend folder

Pour le côté serveur, il vous suffira de copier le contenu générer par la commande 👇🏽 dans le dossier backend

nest new [NAME]

backend_tree

Si vous n'avez pas de dossier Prisma, pas d'inquiétude on s'en occupe un peux plus tard 🧐

Docker Backend

Nous allons conteneriser notre service backend dans le but de portabilité de notre projet et parce que Docker c'est cool 😎

Nous aurons besoin pour sa d'un Dockerfile et d'un .dockerignore, vous vous demandez surement pourquoi un .dockerignore, cela va permettre d'éviter de rentrer en conflit entre les nodes_modules présent sur votre machine et le container, car nous allons mettre en place un système permettant de ne pas build vos images docker à chaque fois que vous modifier une ligne de code dans votre programme et d'avoir le retour en temps réels des messages du client sur votre terminal, plutôt sympa hein 😃, on vera sa un peux plus tard dans le docker-compose.yaml

Du coup voici à quoi ressemble Dockerfile dont nous avons besoin pour notre service et voici le .dockerignore

Frontend folder

Dans le même principe que pour le back, il vous suffit de copier votre dossier de travail dans dossier nommé ```frontend```` et le tour et joué 🙃

Docker Frontend

Pour le Dockerfile est trés similaire car tous ce joue dans le package.json au nom des dépendances qui sont installé.

A partir de ce moment là, vous avez configurer le côté client et le côté server, il nous reste à faire communiquer nos services ensemble et sa grâce à Docker Compose 🫣

Docker-compose

Docker Compose est un outil permettant de définir et d'exécuter des applications Docker multi-conteneurs. Avec Compose, vous utilisez un fichier YAML pour configurer les services de votre application. Ensuite, avec une seule commande, vous créez et démarrez tous les services à partir de votre configuration.

docker-compose.yaml

Notre fichier .yaml va nous permettre de faire communiquer nos différents services entre eux de façon contrôler sans interférer avec les autres services et de façon encapsuler.

Service frontend

build: indique à Docker Compose toutes les étapes pour la construction de notre service Dockerfile: indique le nom du Dockerfile context: indique le chemin oú le trouver target: comme nous avons utiliser AS

[IN PROGRESS ...]

Prisma <-> NestJs

Si vous ne posséder pas de schema.prisma, vous pouvez utiliser ces commandes afin de générer votre précieux 🤩

cd backend
npm install prisma --save-dev
npx prisma init

Un dossier prisma avec un .env on été générer, dans des soucis de best pratices docker, nous allons regrouper les variables environnement dans un seul fichier à la root de votre projet, puis à terme utilisé le secret de docker 🤫

Si vous avez déjà un schema.prisma de prêt sur votre machine, il vous suffira de créer un dossier nommé prisma et d'y placer votre fichier

prisma_tree

Prochain étape va être d'effectuer une migration de votre schéma prisma

[IN PROGRESS...]

Commande Docker-compose

Lancer l'env de dev

docker-compose up

Back-end

Rebuild une image

Il arrive parfois que certains changement telles que les fichiers *.json ne sont pas pris en compte car il sont copié au build de l'image dans ce cas, pensez a rebuild l'image correspondante

docker-compose build [image]

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •