Projet Tuteuré

Technologies utilisées

  • MySQL (8.0)
  • NginX (1.20.2)
  • Symfony (6.0.0)
  • PHP (8.0.13)
  • PHP-FPM
  • Docker
  • Tailwindcss (3.0)

Structure du projet

PROJET-TUT
│           
├───app                     -- le projet symfony qui est synchronisé avec nos conteneurs
│   ├───bin                 -- les fichiers executables (e.g bin/console)
│   ├───config              -- les fichiers de config du projet symfony
│   ├───migrations          
│   ├───public
│   ├───src                 -- le code en php du projet
│   │   ├───Controller      
│   │   ├───Entity
│   │   └───Repository
│   ├───templates           -- les templates twigs
│   │   ├───home
│   │   └───...
│   │
│   ├───tests               -- dossier contenant les tests automatic (e.g tests unitaire)
│   ├───translations    
│   ├───var                 -- dossier contenant les fichiers généré par symfony (e.g log, cache etc.)
│   └───vendor              -- dossier contenant les dépendances du projet          
│
├───mysql                   -- volume synchronisé avec le conteneur pour la base de données
├───nginx                   -- dossier contenant le fichier default.conf synchronisé avec le conteneur nginx pour sa config
└───php                     -- dossier contenant le Dockerfile utilisé pour build notre conteneur php

Démarrer

installation

Pour commencer, installer docker depuis le site officiel.

Puis clonez le répertoire sur votre machine

git clone https://github.com/DenisChon/Projet-Tut.git 

Ensuite placez-vous dans ce répertoire

cd Projet-Tut

Maintenant, vous devriez voir plusieurs dossiers et un fichier docker-compose.yml. Ce fichier contient les informations requises pour créer nos conteneurs docker.

Pour construire ces conteneurs et les lancer, une seule commande est requise :

docker-compose up -d --force-recreate --build
  • up Crée et démarre les conteneurs
  • -d Mode détaché: lance les conteneurs en arrière-plan
  • --force-recreate (optionnel) Recrée les conteneurs même si la configuration et les images n'ont pas changé
  • --build Construis l'image avant de lancer les conteneurs

Voir documentation : docker-compose

Une fois les conteneurs lancés, vous pouvez les visualiser avec la commande :

docker ps -a
  • ps Affiche les conteneurs allumés
  • -a (optionnel) Affiche tous les conteneurs, même les conteneurs fermés

Voir documentation : docker ps

Une fois cette commande tapée, vous devriez avoir quelque chose comme ceci a l'écran :

CONTAINER ID   IMAGE                 COMMAND                  CREATED          STATUS          PORTS                               NAMES   
6af110f50ef3   nginx:stable-alpine   "/docker-entrypoint.…"   21 minutes ago   Up 21 minutes   0.0.0.0:8080->80/tcp                nginx   
bb9bff3733ee   projet-tut_php        "docker-php-entrypoi…"   21 minutes ago   Up 21 minutes   0.0.0.0:9000->9000/tcp              php     
3581a6c4e74d   mysql:8.0             "docker-entrypoint.s…"   21 minutes ago   Up 21 minutes   33060/tcp, 0.0.0.0:4306->3306/tcp   database

On y retrouve plusieurs informations :

  • CONTAINER ID L'identifiant du conteneur
  • IMAGE Le nom de l'image utilisée pour construire le conteneur
  • COMMAND Le terminal qui est utilisé dans le conteneur (e.g : Bash, sh, ...)
  • CREATED Quand le conteneur a été construit
  • STATUS Le statut du conteneur (e.g : Up, Exited, ...) et depuis quand
  • PORTS L'association entre les ports dans le conteneur et ceux sur la machine hôte (votre machine)
  • NAMES Le nom du conteneur

Voir documentation : docker ps

À ce niveau, vos 3 conteneurs sont allumés, vous pouvez donc tenter de vous connecter sur localhost:8080, il peut y avoir une erreur, si ce n'est pas le cas, passez a la suite ici. Si l'erreur ressemble a ça :

Fatal error: Uncaught Error: Failed opening required '/var/www/symfony_docker/vendor/autoload_runtime.php'...

C'est normal ! Si vous regarder dans le fichier .gitignore, on ignore le dossier /vendor/ et ce dossier contient toutes les dépendances de notre projet symfony. Pour installer ce dossier, il suffit d'utiliser composer qui est un gestionnaire de dépendance. Sauf que composer n'est pas disponible n'importe où. Pour y avoir accès, vous devez rentrer dans le conteneur php a l'aide des commandes suivantes :

Cette commande permet d'afficher le nom de vos conteneurs :

docker ps

Voir documentation : docker ps

Une fois que vous avez le nom de votre conteneur php et qu'il est allumé (dans notre cas il se nomme php), vous pouvez vous y connecter dans un terminal. Pour cela, on utilise la commande suivante :

docker exec -it php bash
  • exec Permet d'exécuter une commande dans un conteneur
  • -i Maintient STDIN ouvert même en mode détaché
  • -t Alloue un pseudo-TTY
  • php Le nom du conteneur
  • bash La commande à executer

Voir documentation : docker exec

Maintenant, que vous avez votre terminal d'ouvert, vous devez vous trouver à la racine du projet symfony et c'est donc ici que vous allez installer toutes les dépendances du projet a l'aide de la commande suivante :

composer install 

Voir documentation : composer install

Normalement, l'installation des dépendances devrait prendre quelques secondes, voir quelques minutes. Une fois l'installation des dépendances terminée, vous pouvez tenter de vous reconnecter sur localhost:8080 Et normalement, cette erreur disparaît. Cependant, il reste quelques petites manipulations à faire.

Fichier .env

Il faut lier le projet symfony avec la base de données, pour ça, copier le fichier /app/.env et renommez le en /app/.env.local et dans ce dernier décommenter la ligne correspondante a l'URL de connexion pour MySQL (ligne 30) en remplacant les valeurs suivantes :

  • db_user : root
  • db_password : root
  • 127.0.0.1:3306 : database
  • db_name : symfony

Il faut également modifier une ligne afin d'activer les mail :

MAILER_DSN=gmail+smtp://USERNAME:PASSWORD@localhost?verify_peer=0

En remplacant

  • USERNAME : par l'adresse mail
  • PASSWORD : par le mot de passe du compte

Et en autorisant les applications moins sécurisé a se connecter. ici

en cas de problèmes reconstruisez les conteneurs

Maintenant votre application est liée a votre base de données. Cependant, votre base de données est vide, elle ne contient pas les tables dont l'application symfony a besoin. Pour resoudre ce probleme, vous devez vous placer dans le conteneur php.

docker exec -it php bash
  • exec Permet d'exécuter une commande dans un conteneur
  • -i Maintient STDIN ouvert même en mode détaché
  • -t Alloue un pseudo-TTY
  • php Le nom du conteneur
  • bash La commande à executer

Voir documentation : docker exec

Puis il vous faut executer la commande suivante

php bin/console doctrine:migration:migrate

Voir documentation : doctrine

Pour terminer votre installation, il ne reste plus qu'un utilisateur admin a créer, pour cela, executez les commandes suivantes (dans le conteneur php):

php bin/console app:add:admin

Les identifiants du compte administrateur par default sont admin et admin. Félicitation, votre projet est prêt, tout est bon 🎉!!!

En cas d'erreur, contactez un membre de l'équipe de dev !

Modification du projet

Pour commencer à modifiez votre projet, vous pouvez ouvrir le dossier ./app dans votre IDE.

Si vous voulez modifier le projet symfony en ajoutant des dépendances ou en exécutant le maker-bundle par exemple, il faut avoir accès à symfony ou à composer et ces derniers sont installés dans notre conteneur php. Par conséquent, pour exécuter ce genre de commandes, vous devez vous connecter dans le conteneur php avec la même commande que pour composer install càd :

docker exec -it php bash

Voir documentation : docker exec

Une fois dans votre conteneur, vous pouvez exécuter toutes les commandes que vous voulez pour modifier votre projet:

Voir documentation : Symfony Voir documentation : Composer

Pour modifier le css, etant donner que dans notre projet, nous utilisont tailwindcss il faut l'installer avec le package manager de node qui ets npm qui vas lire le fichier package.json pour installer tout ce dont il a besoin.

npm install

Voir documentation : npm install

maintenant, il ne reste plus qu'a demarrer tailwind pour qu'il genere le css en tant réel, pour cela il faut executer le script npm

npm run watch 

Voir documentation : npm run

Vous pouvez a présent modifier les fichier se trouvant dans le repertoire ./templates, a chaque sauvegarde, tailwind vas regenerer le css dans le fichier ./public/styles/output.css

Docker dans le projet

TODO

Membres du projet

drawing drawing drawing drawing drawing