Maison > développement back-end > tutoriel php > Dockerisez votre application PHP et MySQL : un guide étape par étape des applications multi-conteneurs

Dockerisez votre application PHP et MySQL : un guide étape par étape des applications multi-conteneurs

Susan Sarandon
Libérer: 2024-12-07 19:19:13
original
260 Les gens l'ont consulté

Dockerize Your PHP and MySQL Application: A Step-by-Step Guide to Multi-Container Apps

Dans le monde du développement logiciel moderne, la conteneurisation est devenue la pierre angulaire d'un déploiement efficace et d'une évolutivité. Docker facilite le regroupement d'applications et de leurs dépendances dans des conteneurs portables. Dans ce blog, nous vous guiderons dans la création d'une application PHP et MySQL multi-conteneurs à l'aide de Docker Compose.

Pourquoi utiliser Docker pour PHP et MySQL ?

Cohérence : exécutez votre application dans le même environnement à toutes les étapes de développement et de production.
Isolation : conservez les services comme PHP et MySQL dans des conteneurs séparés pour des configurations modulaires et maintenables.
Facilité de mise à l'échelle : ajoutez ou supprimez facilement des conteneurs à mesure que l'application se développe.

Structure du projet

Votre répertoire de projet devrait ressembler à ceci :

project/
│
├── php-app/
│   ├── Dockerfile
│   └── index.php
│
└── docker-compose.yml
Copier après la connexion

Fichier de composition Docker

Voici le fichier docker-compose.yml :

version: '3.8'

services:
  php-app:
    build: ./php-app  # Builds the PHP app Docker image from the ./php-app directory
    ports:
      - "8080:80"  # Maps port 8080 on the host to port 80 in the container
    depends_on:
      - mysql  # Ensures MySQL starts before the PHP app

  mysql:
    image: mysql:8.0  # Uses the official MySQL image
    ports:
      - "3306:3306"  # Maps port 3306 on the host to port 3306 in the container
    environment:
      MYSQL_ROOT_PASSWORD: root  # Root password for MySQL
      MYSQL_DATABASE: mydb  # Initial database to create
    volumes:
      - mysql-data:/var/lib/mysql  # Persists MySQL data in a named volume

volumes:
  mysql-data:  # Declares a named volume for MySQL data persistence
Copier après la connexion

Code d'application PHP

Le fichier index.php se connecte au conteneur MySQL :

<?php
$servername = "mysql";  // Service name defined in docker-compose.yml
$username = "root";
$password = "root";
$database = "mydb";

try {
    // Create connection
    $conn = new PDO("mysql:host=$servername;dbname=$database", $username, $password);

    // Set PDO error mode to exception
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    echo "Connected to MySQL successfully!";
} catch (PDOException $e) {
    echo "Connection failed: " . $e->getMessage();
}
?>
Copier après la connexion

Dockerfile pour l'application PHP

Le Dockerfile construit le conteneur PHP avec les dépendances requises :

# Use the official PHP image
FROM php:8.2-apache

# Install PDO MySQL extension
RUN docker-php-ext-install pdo pdo_mysql

# Set the working directory
WORKDIR /var/www/html

# Copy the application code
COPY index.php .

# Expose port 80
EXPOSE 80
Copier après la connexion

Étapes pour créer et exécuter

Créer la structure du répertoire

  • Placez Dockerfile et index.php dans le dossier php-app.
  • Placez docker-compose.yml dans le dossier racine du projet.

Créer et démarrer les conteneurs Ouvrez un terminal dans le répertoire du projet et exécutez :

docker-compose up --build
Copier après la connexion

Accédez à l'application PHP Visitez http://localhost:8080 dans votre navigateur. Si tout est correctement configuré, vous devriez voir :

Connected to MySQL successfully!
Copier après la connexion

Vérifiez la base de données MySQL

Utilisez un client MySQL ou MySQL Workbench.
Connectez-vous à localhost :3306 avec :
Nom d'utilisateur : root
Mot de passe : root
Vérifiez que la base de données mydb est créée.

Principales caractéristiques de cette configuration

Gestion des dépendances des services : depend_on garantit que MySQL démarre avant l'application PHP.
Persistance des données : le volume mysql-data stocke les données MySQL, évitant ainsi toute perte lors du redémarrage du conteneur.
Mappage des ports : accédez facilement aux services via les ports mappés sur la machine hôte.

Extension de la configuration

Ajoutez plus de services comme Nginx ou Redis au fichier Compose.
Utilisez les fichiers .env pour gérer les configurations sensibles.
Faites évoluer les services à l’aide de l’option de mise à l’échelle de Docker Compose pour la mise à l’échelle horizontale.

Conclusion

Avec cette configuration, vous avez créé une application PHP et MySQL évolutive et modulaire à l'aide de Docker Compose. La conteneurisation simplifie la gestion de l'environnement et prépare votre application aux déploiements cloud. Que vous soyez débutant ou développeur chevronné, Docker est un outil indispensable au développement d'applications modernes.

Prêt à faire passer votre configuration au niveau supérieur ? Essayez de l'intégrer avec des pipelines CI/CD ou Kubernetes pour un environnement de production.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal