Ce projet est une installation docker compose d'un projet Symfony (Formation sur les fondamentaux) pour un site utilisant Nginx comme serveur web, MariaDB comme base de données et Adminer.
Qu'est ce que Symbnb ?
Symbnb est site reprenant les principales fonctionnalités de Airbnb.
Les fonctionnalités présentes dans le projet sont donc les suivantes :
- S'inscrire, s'authentifier et gérer son compte
- Créer des annonces afin de mettre en location un appartement ou une maison
- Réserver un appartement ou une maison
- Commenter et noter l'annonce après une location
- Lancer le projet - Lancer le projet en local
- Lonfiguration et logs - Les configuration (
docker-compose.yml, Dockerfile
) et logs des containers
NOTE : Supposons que tu es à la racine du projet. (PWD == ./symbnb
)
Il faut lancer le projet et y accéder. Pour cela tape juste la commande ci-dessous dans ton terminal.
$ docker-compose up -d --build
INFO : Ajoute le --build
uniqument si c'est la première fois que tu lance le projet ou si tu as fait des changement dans le fichier Dockerfile
.
L'argument --build
t'évite de taper deux commande à asuite, comme ceci : docker-compose build
puis docker-compose up -d
.
Après quelques instants, tu devrais voir le site en cours d'exécution à http://localhost:8050/.
Une fois que les containers sont lancés, il faut que tu installes le projet.
Suit les étapes suivantes pour intaller le projet.
- Accéder au container php :
$ docker-compose exec php bash
- Installer les dépendances php :
$ composer install
- Installer les dépendances js et css :
$ yarn install
puis$ yarn encore dev
- Faire les migrations dans des entités :
$ bin/console doctrine:schema:update --force
- Jouer les fixtures pour les fausses données :
$ bin/console doctrine:fixtures:load -n
Le projet contient également un espace d'administration.
Tu peux y accéder avec cette URL : http://localhost:8050/admin
Un fake user est disponible pour se connecter entant que user du front et du back :
User : [email protected]
Password : password
Un fichier .env
a été inclus pour définir plus facilement les variables de docker-compose sans avoir à modifier le fichier docker-compose.yml
lui-même.
Si jamais tu veux modifier les valeurs du fichier .env pour faire des tests, duplique le fichier et renomme-le, comme : .env.test
ou .env.local
Le fichier .env
se trouve à la racine du projet (PWD == ./symbnb
).
# PHP/nginx
SERVER_NAME=localhost
TIMEZONE=Europe/Paris
MAX_EXECUTION_TIME=60
# MySQL
MYSQL_ROOT_PASSWORD=dbrootpw
MYSQL_DATABASE=symbnb
MYSQL_USER=symbnb
MYSQL_PASSWORD=symbnbpw
MYSQL_HOST=database
## /DOCKER
Aussi, un deuxième fichier .env existe dans le dossier PWD == ./symbnb/app/
de projet, celui est contient principalement les variables liées à Symfony.
Dans le projet tu retrouveras les repertoires ci-dessous, ils constituent le projet lui-même.
- app: Les fichiers et répertoires liés à Symfony
- docker: Les répertoires des images et logs docker
- docker/admin: Le fichier Dockerfile de Adminer
- docker/logs/nginx: Les fichiers journaux de Nginx (error.log, access.log)
- docker/nginx: Les fichiers de configuration de NGINX et Dockerfile
- docker/php-fpm: Le fichier Dockerfile de PHP-FPM
Les principales variables d'environnement.
SERVER_NAME
: Nom du serveur (localhost
)TIMEZONE
: Heure exacte de notre fuseau horaire (Europe/Paris
)MAX_EXECUTION_TIME
: Temps maximum d'exécution des scriptsMYSQL_ROOT_PASSWORD
: Mot de passe de la base de données. Par défaut 'root' est le user.MYSQL_DATABASE
: Nom de la base de données utilisé.MYSQL_USER
: Nom de l'utilisateur.MYSQL_PASSWORD
: Mot de passe de la base de données.MYSQL_HOST
: Le host pour se connecter à la base de données (database
).
#docker-compose.yml
environment:
- MYSQL_ROOT_PASSWORD=dbrootpw
- MYSQL_DATABASE=symbnb
- MYSQL_USER=symbnb
- MYSQL_PASSWORD=symbnbpw
Tu peux avoir besoin d'afficher les logs des différents containers. Pour cela, utilise les commandes suivantes :
Pour afficher les logs depuis la création des tous les containers :
$ docker-compose logs -f
$ docker-compose logs -f nginx # Uniquement les logs du container nginx
Pour afficher les logs créés à l'instant
$ docker-compose logs -f --tail=0
$ docker-compose logs -f --tail=0 nginx # Uniquement les logs du container nginx
Le -f
permet d'afficher les logs en temps réel.
Et bien, voilà, tu peux t'amuser sur le projet avec toutes ces informations.