Votre projet PHP sur lequel vous souhaitez développer

Objectif : créer un projet php simple qui soit représentatif d’un projet PHP sur lequel vous pourriez être amener à travailler. Ce projet nous servira de support pour le reste du tutoriel.

Pour les besoins de ce tutoriel nous allons créer un simple projet PHP constitué d’une seule page PHP index.php qui accèdera à une base de données MySQL contenant une seule table.

Création de l’arborescence du projet

Créez l’arborescence suivante :

  • un dossier parent docker-lampx.lateambichon.com
  • à l’intérieur de ce dossier créez :
    • le fichier index.php
    • un dossier .devcontainer
  • à l’intérieur du dossier .devcontainer créez :
    • un fichier vide Dockerfile
    • un fichier vide docker-compose.yml
    • un dossier docker
  • à l’intérieur du dossier docker créez :
    • un fichier vide docker-lampx.lateambichon.conf
    • un fichier vide dump_database.sql
    • un fichier vide mod_deflate.conf

Nous allons voir ensuite, à quoi correspondent ces fichiers et dossiers que nous venons de créer.

index.php

Objectif : Ce fichier nous servira :

  • de support pour démontrer les possibilités de debug au sein d’un conteneur docker
  • également il démontrera la possibilité qu’a un conteneur de communiquer avec un autre conteneur : communication avec le conteneur MySQL

Voici le code source de ce fichier :

<?php
    $servername = "docker-mysql";
    $dbname = "dockerltb";
    $username = "dockerltb";
    $password = "password";

    try {
        $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
        // set the PDO error mode to exception
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        echo "<p>Connected successfully to database</p>"; 
    }
    catch(PDOException $e)
    {
        echo "<p>Connection to database failed: " . $e->getMessage() . "</p>";
    }
    echo "<p>This is team bichon!!!</p>";
    echo "<p>phpinfo() result :</p>";
    echo phpinfo();
?>

dump_database.sql

Objectif : Ce fichier sera utilisé pour alimenter notre serveur MySQL.

En pratique, dans votre projet, il peut s’agir d’un dump de la base de données de production dont vous aurez au préalable anonymisé les données (ou non :p), ou de tout autre jeu de données utile pour votre environnement de développement.

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;


DROP TABLE IF EXISTS `dockerltb`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `dockerltb` (
  `id` INTEGER NOT NULL,
  `content` varchar(100) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='List of possible actions';
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Dumping data for table `dockerltb`
--

LOCK TABLES `dockerltb` WRITE;
/*!40000 ALTER TABLE `dockerltb` DISABLE KEYS */;
INSERT INTO `dockerltb` VALUES (1,'This is the team!!!');
/*!40000 ALTER TABLE `dockerltb` ENABLE KEYS */;
UNLOCK TABLES;

<<<< Retour sur la partie 1/5

Aller sur la partie 3/5 >>>>

Partager sur les réseaux