Accueil Blog A propos Contact Connexion
Retour à la liste des articles Symfony : MySQL et phpMyAdmin avec Docker

Symfony : MySQL et phpMyAdmin avec Docker

Olivier Prieur | il y a 3 ans | il y a 7 jours Développement web | 4 | 9996

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

Olivier Prieur

Olivier Prieur

Geek quinqua nivernais fan d'ovalie, de musique, de linuxeries et de Net.
Portfolio : https://www.olivierprieur.fr

Commentaires

En soumettant ce formulaire, j’accepte que ce site conserve mes données personnelles via ce formulaire. Aucune exploitation commerciale ne sera faite des données conservées.

dev

il y a 2 ans

Cette article est intéressant cependant il est incomplet, dans le sens ou on s'attend (du moins moi) a ce que l'article parle de la connexion entre symfony et une base de donnée dockerizée.
Il y a bien un début mais la partie connexion avec entre symfony et base de donnée est manquante.

Dubistar

il y a 2 ans

Très bien cette manip !! et pour répondre au commentaire pour la connexion entre symfony et la bdd, il faut juste taper dans le terminal :
symfony var:export --multiline et copier coller dans le .env "mysql://root:password@127.0.0.1:58101/main?sslmode=disable&charset=utf8mb4" (a adapter selon le nom de sa bdd)

Fanou

il y a 1 an

Très intéressant et rapide cet article !
Comment faire pour les entités se créent réellement dans la DB ? J'ai beau avoir configurer le .env avec le DATABASE_URL, je ne vois rien apparaitre dans la DB.
En revanche les opérations de création d'entité se font bien dans symfony, les migrations également... Je ne comprends pas.

citizenz7

il y a 1 an

@fanou
"Comment faire pour les entités se créent réellement dans la DB ? ". Pas certains de bien comprendre :)
A tout hasard, avez-vous bien fait php bin/console make:migration puis php bin/console doctrine:migrations:migrate ?

A la une

Utiliser TailwindCSS dans un projet Symfony 7

Lire l'article

Symfony 7 avec Docker

Lire l'article

Customiser Easyadmin (2) : avec AssetMapper

Lire l'article

Je recherche un nouveau job !

Lire l'article

Les plus lus

Symfony : barre de recherche dans la sidebar 19385

Lire l'article

Débuter avec Symfony 5 : le fichier .env 11930

Lire l'article

VSCode : 10 raccourcis clavier indispensables (Linux) 11595

Lire l'article

GIT / GITHUB : aide-mémoire pour "les nuls" 10191

Lire l'article