Ceci est un projet d'application web fonctionnant avec un backend sous Symfony3.4 et un frontend sous React.
Afin de faciliter son installation, le projet utilise docker.
https://docs.docker.com/install/
git clone https://github.com/Insomniak313/rested.git
cd rested
sudo ./install.bash
Lors de l'installation, les conteneurs sont créés (cf ci-dessous pour leur description).
La base de donnée MySQL est crée, son schéma est mis à jour et les données issues de l'API https://api.gouv.fr/api/api-geo.html sont stockées (grâce à la commande php bin/console app:load-data
). Dans le cadre de ce projet, on se limite simplement à récupérer les régions et les départements français.
Le back propose alors différentes routes pour retourner les données, que le front consume.
- L'environnement back "PROD" est accessible à l'URL http://localhost:10081
- L'environnement back "DEV" est accessible à l'URL http://localhost:10082
- L'environnement front est accessible à l'URL http://localhost:10083
- PhpMyAdmin est accessible à l'URL http://localhost:10085
Lors de l'installation, 5 conteneurs sont créés.
Ils écoutent tous sur des ports "non-standard" afin que ceux-ci ne soient pas déjà utilisés par un service quelconque.
Il contient la base de données.
- 13306
Une interface graphique pour la base de données.
- 10085
Ce conteneur permet d'installer les différentes dépendances du projet back, sans avoir a installer Composer sur le conteneur "PHP7.2+Apache2.4".
Une fois que les vendors ont été récupérés et que les scripts post-installation ont été lancés, ce conteneur est terminé (il n'est alors plus utile).
Ce conteneur à accès au code source de la partie back et aux vendors récupérés par le conteneur Composer.
2 VirtualHost sont installés :
- Un environnement "PROD", accessible à l'URL http://localhost:10081
- Un environnement "DEV", accessible à l'URL http://localhost:10082
- 10081
- 10082
Ce conteneur à accès au code source de la partie front.
Il lance le serveur de développement, accessible à l'URL http://localhost:10083
- 10083
Les dossiers /front/ et /back/ sont synchronisés sur les conteneurs. Toute modification des sources est directement prise en compte.
Les executables (php, yarn) doivent par contre être lancés sur les conteneurs car ils ne sont pas présent sur l'hôte.
Afin de faciliter le développement, des scripts portant le nom de l'executable à lancer sur l'hôte ont été rajoutés dans le dossier /script :
-> php bin/console ...
devient ./scripts/php bin/console ...
-> yarn test
devient ./scripts/yarn test
## Axes d'amélioration
- Back
- Intégration de PHPUnit
- Amélioration des performances du Crawler
- Amélioration de la sécurité
- Front
- Intégration de Jest
- Intégration de Enzyme
Si lors de l'installation, des messages "The server requested authentication method unknown to the client" remontent c'est que l'installation de MySQL s'est mal passée. Depuis la version 8, MySQL propose de nouvelles façon de se connecter qui n'ont pas encore été implémentées dans PHP.
Pour résoudre ce problème, lancer les commandes :
sudo docker exec -it $(sudo docker container ls --filter name=rested_mysql --quiet) /bin/bash
Vous vous retrouvez alors connecté au conteneur MySQL :
root@a50856802429:/#
Rentrez alors la commande suivante pour vous connecter à MySQL :
mysql -uroot -proot
Une fois connecté à MySQL, exécuter la requête SQL suivante :
ALTER USER 'root' IDENTIFIED WITH mysql_native_password BY 'root';