- MySQL (8.0)
- NginX (1.20.2)
- Symfony (6.0.0)
- PHP (8.0.13)
- PHP-FPM
- Docker
- Tailwindcss (3.0)
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
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 conteneurIMAGE
Le nom de l'image utilisée pour construire le conteneurCOMMAND
Le terminal qui est utilisé dans le conteneur (e.g : Bash, sh, ...)CREATED
Quand le conteneur a été construitSTATUS
Le statut du conteneur (e.g : Up, Exited, ...) et depuis quandPORTS
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-TTYphp
Le nom du conteneurbash
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.
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
: rootdb_password
: root127.0.0.1:3306
: databasedb_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 mailPASSWORD
: 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-TTYphp
Le nom du conteneurbash
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 !
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
TODO