TUTOS.EU

Créer un serveur php mysql phpmyadmin avec Docker

Comment faire tourner php mysql et phpmyadmin avec Docker

Vérifier que Docker est bien installé avec

sudo apt install docker docker-compose
Lien vers le fichier : cliquez ici Copier le code

Comme indiqué sur https://docs.docker.com/engine/install/linux-postinstall/
ou encore https://www.youtube.com/watch?v=_mwWxgfZ7Zc&t=806s
Pour que votre compte utilisateur possède les droits type 'root' sur docker, taper les commandes suivantes, puis se reloger pour prise en compte

sudo groupadd docker
sudo usermod -aG docker $USER
newgrp docker
Lien vers le fichier : cliquez ici Copier le code

Vérifier que docker fonctionne bien avec

docker run hello-world
Lien vers le fichier : cliquez ici Copier le code

On va commencer par créer un répertoire dockerapp dans notre répertoire personnel.
On y fait un répertoire php qui contiendra ensuite les fichiers du site ainsi qu'un répertoire db pour les bases de données et un répertoire pour phpmyadmin

On va avoir besoin de customiser l'image de php pour déclarer mysqli (technique trouvé sur https://www.youtube.com/watch?v=_mwWxgfZ7Zc&t=824s),
aussi dans ce répertoire dockerapp on va créer un fichier dockerfile.
dockerfile est un fichier de configuration qui permet de créer une image avec une séquence de commandes.

cd ~
mkdir dockerapp
cd dockerapp
mkdir php
mkdir db
mkdir phpmyadmin
nano dockerfile
Lien vers le fichier : cliquez ici Copier le code

Coller ce contenu dans le dockerfile de php

FROM php:7.3-apache
RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install mysqli
EXPOSE 80
Lien vers le fichier : cliquez ici Copier le code

Dans le répertoire php on va créer un fichier index.php
afin que le site affiche qqchose le moment venu.
Pour cela taper

nano ./php/index.php
Lien vers le fichier : cliquez ici Copier le code

Y coller ceci

<?php
$host = 'db'; //Nom donné dans le docker-compose.yml
$user = 'myuser';
$password = 'monpassword';
$db = 'tutoseu';

$conn = new mysqli($host,$user,$password,$db);
if(!$conn) {echo "Erreur de connexion à MSSQL<br />";}
else{
        echo "Connexion à MSSQL ok<br />";
        mysqli_close($conn);
}

?>
Lien vers le fichier : cliquez ici Copier le code

Maintenant on va créer un fichier docker-compose.yml
dans lequel on donnera nos instructions

nano docker-compose.yml
Lien vers le fichier : cliquez ici Copier le code

Y Coller ce contenu

version: '3.3'

services:
 php:
  build:
   context: .
   dockerfile: dockerfile
  container_name: php73
  image: php:7.3-apache
  volumes:
   - ./php:/var/www/html/
  ports:
   - 80:80
Lien vers le fichier : cliquez ici Copier le code

On peut déjà vérifier que php se lance en tapant

docker-compose up -d
Lien vers le fichier : cliquez ici Copier le code

Le build doit se passer sans erreur et vous devez voir un conteneur php73

Les logs de docker-compose peuvent se voir avec

docker-compose logs -f
Lien vers le fichier : cliquez ici Copier le code

Comme dit sur https://docs.docker.com/get-started/08_using_compose/
"The service name is displayed at the beginning of the line"

On peut filtrer sur le nom d'un service comme "app". Ce qui donnerait

docker-compose logs -f app
Lien vers le fichier : cliquez ici Copier le code

On va compléter le fichier docker-compose.yml
Pour éviter les erreurs on va le supprimer puis le recréer

rm docker-compose.yml
nano docker-compose.yml
Lien vers le fichier : cliquez ici Copier le code

Y coller ceci

Noter que ./php correspond à un sous répertoire dont la position est relative au fichier docker-compose.yml

version: '3.3'

services:
 php:
  build:
   context: .
   dockerfile: dockerfile
  container_name: php73
  depends_on:
   - db
  image: php:7.3-apache
  volumes:
   - ./php:/var/www/html/
  ports:
   - 80:80
 db:
  container_name: mysql8
  image: mysql:8.0
  command: --default-authentication-plugin=mysql_native_password
  environment:
   MYSQL_ROOT_PASSWORD: tutoseu
   MYSQL_DATABASE: tutoseu
   MYSQL_USER: myuser
   MYSQL_PASSWORD: monpassword
  ports:
   - 3306:3306
 phpmya:
  image: phpmyadmin/phpmyadmin:latest
  container_name: phpmyadmin
  environment:
   PMA_ARBITRARY: 1
   PMA_HOST: db
   PMA_USER: myuser
   PMA_PASSWORD: monpassword
   UPLOAD_LIMIT: 20M
  ports:
   - 8899:80
Lien vers le fichier : cliquez ici Copier le code

Prendre en compte les modifications en faisant de nouveau

docker-compose up -d
Lien vers le fichier : cliquez ici Copier le code

Voir

docker-compose down && docker-compose up -d
Lien vers le fichier : cliquez ici Copier le code

Avec un navigateur, si vous accédez à l'ip de votre machine linux, vous devez voir s'afficher quelque-chose comme ci-dessous.
Pour récupérer l'ip de votre machine, voir https://www.tutos.eu/5699

Notez que l'on a vu plus haut qu'on pouvait voir les logs d'un service en particulier, un service qui pourrait s'appeler "app".
On peut aussi s'y connecter avec un bash avec une commande du type

docker compose exec app bash
Lien vers le fichier : cliquez ici Copier le code

Article(s) précédent(s)

2