0Pricing
PHP Academy · Lektion

Eine PHP-Anwendung containerisieren

Erstellen Sie ein Docker-Image für PHP und Nginx und orchestrieren Sie es mit Docker Compose.

Eine PHP-Anwendung containerisieren ist eine kostenlose PHP Academy-Lektion auf CoddyKit. Dies ist Lektion 4 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des PHP Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Warum Docker für PHP?

Docker verpackt Ihre Anwendung zusammen mit ihren Abhängigkeiten in ein portierbares Container-Image. Dasselbe Image läuft in der Entwicklung, CI und Produktion identisch – dadurch entfallen Probleme nach dem Muster „Auf meinem Rechner funktioniert es“.

Einfaches PHP-Dockerfile

Ein minimales Dockerfile für eine PHP- und Nginx-Anwendung.

# Dockerfile
FROM php:8.3-fpm-alpine

# Install extensions
RUN docker-php-ext-install pdo pdo_mysql opcache

# Install Composer
COPY --from=composer:2 /usr/bin/composer /usr/bin/composer

WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader

COPY . .

RUN chown -R www-data:www-data /app/storage /app/bootstrap/cache

Multi-Stage-Build

Verwenden Sie Multi-Stage-Builds, damit das finale Image klein bleibt – installieren Sie Build-Tools in einer Stage und kopieren Sie nur die Artefakte in das finale Image.

# Stage 1: builder
FROM composer:2 AS builder
WORKDIR /app
COPY composer.json composer.lock ./
RUN composer install --no-dev --optimize-autoloader

# Stage 2: runtime
FROM php:8.3-fpm-alpine
WORKDIR /app
COPY --from=builder /app/vendor ./vendor
COPY . .

docker-compose.yml

Orchestrieren Sie mehrere Dienste wie PHP-FPM, Nginx, MySQL und Redis mit Docker Compose.

# docker-compose.yml
services:
  app:
    build: .
    volumes:
      - .:/app
  nginx:
    image: nginx:alpine
    ports: ["80:80"]
    volumes:
      - .:/app
      - ./docker/nginx.conf:/etc/nginx/conf.d/default.conf
  mysql:
    image: mysql:8
    environment:
      MYSQL_DATABASE: myapp
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db_data:/var/lib/mysql
  redis:
    image: redis:alpine
volumes:
  db_data:

Nginx-Container-Konfiguration

Binden Sie eine benutzerdefinierte Nginx-Konfiguration ein, um PHP-FPM-Anfragen weiterzuleiten.

# docker/nginx.conf
server {
    listen 80;
    root /app/public;
    index index.php;
    location / { try_files $uri /index.php?$query_string; }
    location ~ \.php$ {
        fastcgi_pass app:9000;  # service name from docker-compose
        fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
        include fastcgi_params;
    }
}

Umgebungsvariablen

Übergeben Sie Umgebungsvariablen an Container – hinterlegen Sie Secrets niemals fest in Images.

# docker-compose.yml:
services:
  app:
    env_file: .env
    # or explicit:
    environment:
      - APP_ENV=production
      - DB_HOST=mysql

Laravel-Artisan-Befehle

Führen Sie Artisan-Befehle innerhalb des Containers aus.

$ docker compose exec app php artisan migrate
$ docker compose exec app php artisan config:cache
$ docker compose exec app php artisan queue:work

Health Checks

Fügen Sie Health Checks hinzu, damit Orchestratoren wie Kubernetes und ECS wissen, wann der Container bereit ist.

# Dockerfile:
HEALTHCHECK --interval=30s --timeout=5s \
  CMD curl -f http://localhost/health || exit 1

Images erstellen und übertragen

Erstellen Sie Ihr Image und übertragen Sie es in eine Registry wie Docker Hub, ECR oder GHCR.

$ docker build -t myorg/myapp:1.0.0 .
$ docker push myorg/myapp:1.0.0

Kubernetes-Deployment

Definieren Sie in Kubernetes eine Deployment- und eine Service-Ressource mithilfe Ihres Images. Führen Sie neue Versionen mit kubectl set image aus oder aktualisieren Sie die YAML-Datei und wenden Sie sie an.

Absicherung für die Produktion

Bewährte Docker-Praktiken für die Produktion: Verwenden Sie einen Benutzer ohne Root-Rechte, ein schreibgeschütztes Root-Dateisystem und ein minimales Basis-Image (Alpine), verzichten Sie auf Entwicklungsabhängigkeiten, legen Sie Image-Tags fest und suchen Sie mit docker scout nach CVEs.

Zusammenfassung

Erstellen Sie ein Dockerfile für PHP-FPM und Composer. Verwenden Sie docker-compose für die lokale Entwicklung mit Nginx-, MySQL- und Redis-Diensten. Verwenden Sie in der Produktion Multi-Stage-Builds, injizieren Sie Umgebungsvariablen und führen Sie die Anwendung über Kubernetes oder ECS aus.

Kurzer Check

Was ist der wichtigste Vorteil von Multi-Stage-Docker-Builds?

Häufig gestellte Fragen

Ist die Lektion „Eine PHP-Anwendung containerisieren“ kostenlos?

Ja — der vollständige Text von „Eine PHP-Anwendung containerisieren“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des PHP Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der PHP Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Eine PHP-Anwendung containerisieren“?

Erstellen Sie ein Docker-Image für PHP und Nginx und orchestrieren Sie es mit Docker Compose. Du übst PHP Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um PHP Academy zu starten?

Keine Vorkenntnisse erforderlich. PHP Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 4 von 4.

Wie lange dauert die Lektion „Eine PHP-Anwendung containerisieren“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser PHP Academy-Lektion Code schreiben und ausführen?

Ja. Jede PHP Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Nginx- und PHP-FPM-Konfiguration
  2. Umgebungsvariablen und .env-Dateien
  3. Mit GitHub Actions deployen
  4. Eine PHP-Anwendung containerisieren
← Zurück zu PHP Academy