Skip to content
Snippets Groups Projects
Commit 591d4625 authored by Eliott Schott's avatar Eliott Schott
Browse files

update compte rendu

parent 81bb0581
Branches
No related merge requests found
......@@ -41,25 +41,105 @@ Rangez-le dans le dossier de votre choix, puis lancez le Nginx Proxy Manager (NP
docker compose up -d
```
Rendez-vous sur [l'interface de NPM](localhost:81).
Dans le même répertoire que votre fichier compose.yml, créez un fichier nginx.conf.
Dedans, vous pourrez configurer les redirections et les communications nécessaires au bon fonctionnement de l'application.
Par défaut, l'email est `admin@example.com` et le mot de passe est `changeme`. Vous pouvez ensuite choisir celui que vous voulez.
Cliquez sur "Proxy host" puis "Add proxy host" et entrez les informations suivantes : !config_proxy_host1 !config_proxy_host2.
_Les noms de domaine demandés peuvent soit être votre IP (si vous possédez une IP privée ou que vous ne voulez pas de nom de domaine), soit le nom que vous avez acheté au préalable (à OVH, Cloudflare ou autre)._
Vous pouvez également ajouter votre propre nom de domaine, qui pointe vers l'adresse IP de votre serveur.
\_Les noms de domaine demandés peuvent soit être votre IP (si vous possédez une IP privée ou que vous ne voulez pas de nom de domaine), soit le nom que vous avez acheté au préalable (à OVH, Cloudflare ou autre).\*
Si vous possédez une IP publique, vous pouvez aussi demander à Nginx la création d'un certificat SSL (qui crypte les échanges sur le réseau pour plus de sécurité), aussi parfois nommé "le petit cadenas sur Google", via :
!ssl
```
certbot --nginx -d <nom-de-domaine>
```
Il vous suffira de renseigner les certificats ssl dans votre fichier nginx.conf, et d'ajouter l'option ssl à coté du listen :
```
ssl_certificate /etc/letsencrypt/live/<nom-de-domaine>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<nom-de-domaine>/privkey.pem;
```
Exemple de configuration NGINX à la fin :
```
events {}
http {
server {
listen 443 ssl;
# server_name _;
server_name <nom-de-domaine>;
ssl_certificate /etc/letsencrypt/live/<nom-de-domaine>/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/<nom-de-domaine>/privkey.pem;
location /api {
proxy_pass http://api-prod:3000/api; # Utilisation du nom du conteneur
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location / {
proxy_pass http://web:8080/; # Utilisation du nom du conteneur
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name <nom-de-domaine>;
return 301 https://$host$request_uri;
}
}
```
Afin de protéger les ports de vos applications, il sera nécessaire d'exposer les ports en local, et pas vers l'éxterieur.
Exemple dans le fichier docker-compose.prod.yml de l'api :
```
backend:
container_name: ${API_PROD_CONTAINER_NAME}
build:
context: .
dockerfile: Dockerfile
ports:
- '127.0.0.1:5555:5555' -> on n'autorise pas la communication sur le port 5555 depuis l'extérieur, en ajoutant l'adresse locale avant le port
environment:
- DATABASE_URL=${DATABASE_URL}
- API_PORT=${API_PORT}
depends_on:
- db
networks:
- the_all_knowing
```
### Initialisation du projet
Dernière ligne droite !
Rendez-vous là où vous avez cloné le projet (web et API) et, dans chacun des dossiers, lancez les containers via :
Veillez d'abord à installer dos2unix via la commande :
```
sudo apt install dos2unix
```
Pour déployer la partie web, rendez-vous dans le repertoire du projet et éxecutez la commande suivante :
```bash
./init.sh
```
Pour déployer l'API, rendez-vous dans le repertoire du projet et éxecutez la commande suivante :
```bash
docker-compose -f docker-compose.prod.yml up -d
./init.sh prod
```
Pour vérifier si les conteneurs sont bien lancés, effectuer la commande
......@@ -92,9 +172,7 @@ sudo usermod -aG docker $USER
Lors de la réception du projet, nous n'avons pas trouvé de procédure d'installation. Nous avons donc peu parcouru les différents projets, et avons trouvé deux fichiers docker-compose permettant de déployer respectivement l'API et l'application Web (comme précisé dans la documentation d'installation ci dessus). Nous avons donc repris ces fichiers pour déployer les applications.
Nous n'avons également pas trouvé de foire aux questions ni de troubleshooting.
Le pipeline est fonctionnelle, mais a necessité la modification de l'adresse de déploiement sans trop de surprise (la modification a été très rapide).
Le pipeline est fonctionnel, mais a necessité la modification de l'adresse de déploiement sans trop de surprise (la modification a été très rapide).
Les script init.sh faisaient la même chose que les docker-compose avec quelques fantaisie sur le choix d'environnement. Environnement qui utilisait beaucoup de variables externes (.env), pas forcément nécessaire. Nous avons simplifié en enlevant lesdits scripts (transféré vers les dockerfiles) et en écrémant les variables en trop.
......@@ -102,7 +180,7 @@ Nous avons également mis à jour les containers pour qu'aucun n'expose ses port
## Technologies
L'api utilise des technos vues en cours (prisma, express, jwt, etc) ou utilisées dans nos anciens projet (swagger, etc). L'extension et la maintanbilité ne devraient pas poser trop de problèmes.
L'api utilise des technologiess vues en cours (prisma, express, jwt, etc) ou utilisées dans nos anciens projet (swagger, etc). L'extension et la maintenabilité ne devraient pas poser trop de problèmes.
## Ancien protocole d'installation
......@@ -118,6 +196,7 @@ Au besoin, les bribes de documentation et infos transmises par l'ancien groupe e
- Modes multi ont une connexion instable
- Modes multi sont affreusement lents (problème d'ergonomie, long à redévelopper)
- Dans la CI/CD, les tests et le lint ne marchent pas, dans le sens où ils sont mal configurés et il manque des dépendances
- La base de données étant contenue dans l'image lancée lors du déploiement de l'API, les données sont toutes effacées dès qu'on relance l'API.
### Problèmes UI/UX
......@@ -200,4 +279,4 @@ Oui, au bout de quelques jours, nous avons remarqué une erreur "d'api impossibl
Il faut simplement changer deux points importants :
- le nom d'utilisateur et ip, codés en dur pour l'ancien site, qu'on met en variable "d'environnement" et qu'on change avec les notres
- les codntions de lancement : à chaque push, les pipelines des différents repo sont lancées, nous les limitons à "main"
- les conditions de lancement : à chaque push, les pipelines des différents repo sont lancées, nous les limitons à "main"
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment