Skip to content

REST Symfony 3.4 Backend + React Frontend powered by Docker

License

Notifications You must be signed in to change notification settings

Insomniak313/rested

Repository files navigation

rested

Introduction

Ceci est un projet d'application web fonctionnant avec un backend sous Symfony3.4 et un frontend sous React.

Pré-requis

Afin de faciliter son installation, le projet utilise docker.
https://docs.docker.com/install/

Installation

git clone https://github.com/Insomniak313/rested.git
cd rested
sudo ./install.bash

Qu'est-ce qui vient de se passer ?

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

Descriptif des conteneurs

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.

1 - MySQL

Il contient la base de données.

Ports ouverts en écoute :
  • 13306

2 - PhpMyAdmin

Une interface graphique pour la base de données.

Ports ouverts en écoute :
  • 10085

3 - Composer

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).

4 - PHP7.2+Apache2.4 "Dev" & "Prod"

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
Ports ouverts en écoute :
  • 10081
  • 10082

5 - Nginx

Ce conteneur à accès au code source de la partie front.
Il lance le serveur de développement, accessible à l'URL http://localhost:10083

Ports ouverts en écoute :
  • 10083

Environnement de développement

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

Problème éventuel lié à MySQL

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';

About

REST Symfony 3.4 Backend + React Frontend powered by Docker

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published