Heim >Backend-Entwicklung >PHP-Tutorial >Dockerisieren Sie Ihre PHP- und MySQL-Anwendung: Eine Schritt-für-Schritt-Anleitung für Multi-Container-Apps

Dockerisieren Sie Ihre PHP- und MySQL-Anwendung: Eine Schritt-für-Schritt-Anleitung für Multi-Container-Apps

Susan Sarandon
Susan SarandonOriginal
2024-12-07 19:19:13254Durchsuche

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

In der Welt der modernen Softwareentwicklung ist die Containerisierung zu einem Eckpfeiler für effiziente Bereitstellung und Skalierbarkeit geworden. Docker erleichtert das Packen von Anwendungen und ihren Abhängigkeiten in tragbare Container. In diesem Blog führen wir Sie durch die Erstellung einer Multi-Container-PHP- und MySQL-Anwendung mit Docker Compose.

Warum Docker für PHP und MySQL verwenden?

Konsistenz: Führen Sie Ihre App in allen Phasen der Entwicklung und Produktion in derselben Umgebung aus.
Isolation: Halten Sie Dienste wie PHP und MySQL in separaten Containern für modulare und wartbare Setups.
Einfache Skalierung: Fügen Sie Container einfach hinzu oder entfernen Sie sie, wenn die App wächst.

Projektstruktur

Ihr Projektverzeichnis sollte so aussehen:

project/
│
├── php-app/
│   ├── Dockerfile
│   └── index.php
│
└── docker-compose.yml

Docker Compose-Datei

Hier ist die Datei 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

PHP-Anwendungscode

Die Datei index.php stellt eine Verbindung zum MySQL-Container her:

<?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();
}
?>

Dockerfile für PHP-App

Die Docker-Datei erstellt den PHP-Container mit den erforderlichen Abhängigkeiten:

# 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

Schritte zum Erstellen und Ausführen

Erstellen Sie die Verzeichnisstruktur

  • Legen Sie Dockerfile und index.php im Ordner „php-app“ ab.
  • Platzieren Sie docker-compose.yml im Stammprojektordner.

Container erstellen und starten Öffnen Sie ein Terminal im Projektverzeichnis und führen Sie Folgendes aus:

docker-compose up --build

Greifen Sie auf die PHP-Anwendung zu. Besuchen Sie http://localhost:8080 in Ihrem Browser. Wenn alles richtig eingerichtet ist, sollten Sie Folgendes sehen:

Connected to MySQL successfully!

Überprüfen Sie die MySQL-Datenbank

Verwenden Sie einen MySQL-Client oder MySQL Workbench.
Stellen Sie eine Verbindung zu localhost:3306 her mit:
Benutzername: root
Passwort: root
Überprüfen Sie, ob die Datenbank mydb erstellt wurde.

Hauptmerkmale dieses Setups

Service Dependency Management: depend_on stellt sicher, dass MySQL vor der PHP-Anwendung startet.
Datenpersistenz: Das mysql-data-Volume speichert MySQL-Daten und verhindert so Verluste bei Container-Neustarts.
Port-Zuordnung: Einfacher Zugriff auf Dienste über Ports, die dem Host-Computer zugeordnet sind.

Erweiterung des Setups

Fügen Sie der Compose-Datei weitere Dienste wie Nginx oder Redis hinzu.
Verwenden Sie .env-Dateien, um vertrauliche Konfigurationen zu verwalten.
Skalieren Sie Dienste mit der Skalierungsoption von Docker Compose für die horizontale Skalierung.

Abschluss

Mit diesem Setup haben Sie eine skalierbare, modulare PHP- und MySQL-Anwendung mit Docker Compose erstellt. Die Containerisierung vereinfacht die Umgebungsverwaltung und bereitet Ihre App auf Cloud-Bereitstellungen vor. Egal, ob Sie Anfänger oder erfahrener Entwickler sind, Docker ist ein unverzichtbares Werkzeug für die moderne Anwendungsentwicklung.

Sind Sie bereit, Ihr Setup auf die nächste Stufe zu heben? Versuchen Sie, dies mit CI/CD-Pipelines oder Kubernetes für eine Produktionsumgebung zu integrieren.

Das obige ist der detaillierte Inhalt vonDockerisieren Sie Ihre PHP- und MySQL-Anwendung: Eine Schritt-für-Schritt-Anleitung für Multi-Container-Apps. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn