Symfony : MySQL et phpMyAdmin avec Docker

Symfony : MySQL et phpMyAdmin avec Docker

PREREQUIS
Avoir installé :

  • Docker
  • docker-compose
  • Composer
  • Symfony CLI

On crée un projet en --full

symfony new demo-docker --full


On rentre dans le répertoire du nouveau projet

cd demo-docker


On démarre le serveur Symfony

symfony serve -d


Si vous ne l'avez pas encore configuré, ne tenez pas compte des éventuels warnings à propos du HTTPS.
On peut désormais ouvir son navigateur à l'adresse http://127.0.0.1:8000

On va tout de suite créer une base de données MySQL avec phpMyAdmin grâce à Docker et docker-compose.
Symfony nous simplifie la tâche. On tape simplement :

symfony console make:docker:database


On tape 0 (choix pour MySQL)
Puis on laisse par défaut [latest] donc on tape simplement sur Entrée

Un nouveau fichier est apparu à la racine du projet : docker-compose.yaml
Il a été automatiquement créé avec le mot de passe root qui est password et le nom de la base MySQL qui main

Avant de lancer docker, on va ajouter phpMyAdmin au fichier docker-compose.yaml. Voici le fichier complet :

version: '3.7'
services:
    database:
        image: 'mysql:latest'
        environment:
            MYSQL_ROOT_PASSWORD: password
            MYSQL_DATABASE: main
        ports:
            # To allow the host machine to access the ports below, modify the lines below.
            # For example, to allow the host to connect to port 3306 on the container, you would change
            # "3306" to "3306:3306". Where the first port is exposed to the host and the second is the container port.
            # See https://docs.docker.com/compose/compose-file/#ports for more information.
            - '3306'
    phpmyadmin:
        depends_on:
            - database
        image: phpmyadmin
        restart: always
        ports:
            - 8080:80
        environment:
            PMA_HOST: database


Ici, on précise qu'on veut pouvoir se connecter à phpMyAdmin sur le port 8080 (donc à l'adresse http://127.0.0.1:8080).
Les identifiants de connection sont hérités de MySQL. On va donc utiliser le login root et mot de passe password

Attention !!! Le formatage ici est très important et vous devez le respecter au risque que cela ne fonctionne pas.

Une fois fait, on lance tout ça avec docker-compose :

docker-compose up -d


Désormais on peut se connecter sur http://127.0.0.1:8080, rentrer login/mot de passe et vous avez accès à phpMyAdmin.

Pour pousser un peu plus loin l'exemple, on crée un Controller Home afin de disposer d'une page d'accueil :

symfony console make:controller Home


On edite le fichier src/Controller/HomeController.php (qui vient d'être créé avec la commande précédente) et on change la route.
La page home sera la page d'accueil, la première page du site quand on se connecte, donc on met une route avec seulement "/" :

* @Route("/", name="home")


On enregistre.

On edite templates/home/index.html.twig.
On supprime toutes les lignes entre {% block body %} et {% endblock %}
On va juste mettre un titre en <h1> pour l'exemple dans le block body :

{% extends 'base.html.twig' %}
{% block title %}Hello HomeController!{% endblock %}
{% block body %}
     <h1>Bienvenue sur la page Home !</h1>
{% endblock %}


On rafraichit la page à l'adresse http://127.0.0.1:8000 et vous devriez voir le titre <h1>.

On dispose au final de MySQL et de phpMyAdmin sans devoir l'installer sur son PC.
Hyper pratique ! ;)

Pour arrêter vos container docker, il suffit de taper la commande suivante :

docker-compose stop
citizenz7
Posté par citizenz7

Geek quinqua nivernais fan d'ovalie, de linuxerie, de musique et de Net

0 commentaire

Laisser un commentaire

Votre adresse email ne sera pas publiée.

Email:
Pseudo:
Message:
Accepter les CGU
Recopiez le code antispam: