FROM php:8.1-apache
RUN apt-get update && apt-get upgrade -y
RUN docker-php-ext-install mysqli && docker-php-ext-enable mysqli
RUN docker-php-ext-install pdo pdo_mysql
* Depuis l'invite de commande, le **terminal** pour Linux ou **Powershell** pour Windows, dans le dossier contenant le **fichier Dokerfile**, lancez la commande suivante pour créer :
* une image **appelée php-mariadb** et **préfixée** par votre pseudo Docker :
docker build -t ctecher/php-mariadb .
===== Test de votre image =====
Pour pouvoir tester votre nouvelle image **php-mariadb**, vous devez mettre en œuvre :
* un **conteneur MariaDB** appelé **srvbdd**;
* un **script bdd\_phptest\_sov.sql** de **création** d'une base de données appelée **phptest** ;
* un **conteneur** appelé **testphp** créé à partir de la nouvelle image **php-mariadb** ;
* un **script index.php** permettant de **tester la connexion** à la base de données **phptest**.
CREATE DATABASE phptest;
USE phptest;
CREATE TABLE produits (
nom VARCHAR(50)
);
INSERT INTO produits (nom) VALUES ('fraises');
INSERT INTO produits (nom) VALUES ('melons');
getMessage());
}
$stmt = $pdo->query("SELECT nom FROM produits");
echo "Contenu de la base de test
";
echo "";
echo "Nom ";
while ($row = $stmt->fetch()) {
echo "" . htmlspecialchars($row['nom']) . " ";
}
echo "
";
?>
==== Création du conteneur mariadb appelé srvbdd====
* création du dossier contenant le script **bdd\_php-test\_sov.sql** :
mkdir init
cd init
* copie du fichier **bdd\_php-test\_sov.sql** dans le dossier init.
* création du conteneur **srvbdd** avec :
* la définition du mot de passe du compte root,
* exécution automatique du contenu du fichier **bdd\_php-test\_sov.sql** :
docker run -d \
--name srvbdd \
-e MARIADB_ROOT_PASSWORD=Sio1234* \
-e MARIADB_DATABASE=phptest \
-p 3306:3306 \
-v ./init:/docker-entrypoint-initdb.d \
mariadb
mkdir www
cd www
* copie du fichier **index.php** dans le dossier **www**.
* création du conteneur **testphp** avec :
* la mappage du dossier **www** avec le dossier de piblicatio **/var/www/html** du conteneyr ;
* le port réseau de l'hôte de votre choix. Par exemple 8080 ;
* le lien avec le conteneur **svrbdd** (l'utilisation de ce paramètre **link** sera explicité dans l'activité suivante) ;
* la nouvelle image que vous devez tester. Ici **ctecher/php-mariadb**
docker run -d \
--name testphp \
-p 8080:80 \
--link srvbdd:srvbdd
-v ./www:/var/www/html \
ctecher/php-mariadb
===== Test de votre image avec un fichier docker-compose.yml=====
L'utilisation du fichier Docker-compose.yml sera explicité dans une prochaine activité.
* utilisation du dossier **init** contenant le script **bdd\_php-test\_sov.sql** ;
* utilisation du dossier **wws** contenant le fichier **index.html**.
services:
# base de données MariaDB
srvbdd:
image: mariadb
volumes:
- ./init:/docker-entrypoint-initdb.d/
environment:
MARIADB_ROOT_PASSWORD: Sio1234*
# site Web php
testphp:
image: ctecher/php-mariadb
depends_on:
- srvbdd
ports:
- 8080:80
volumes:
- ./www:/var/www/html
* lancement des conteneurs :
docker compose up -d
* arrêt des conteneurs :
docker compose down
====== Retour Accueil Docker ======
* [[reseau:docker:accueil|Docker]]