Docker für die Webentwicklung: Apache, PHP, MySQL und PhpMyAdmin

Letzte Aktualisierung:

Die Einrichtung einer Webentwicklungs-Umgebung kann komplex sein. Mit Docker wird dieser Prozess erheblich vereinfacht. In diesem Leitfaden zeige ich dir, wie du Docker nutzt, um eine Umgebung mit Apache, PHP, MySQL und PhpMyAdmin zu erstellen. Dabei werden wir auch den Befehl docker run und die Ressourcen von Docker Hub nutzen.



Warum Docker?


Docker hat die Art und Weise, wie Entwickler mit Umgebungen arbeiten, revolutioniert. Durch die Verwendung von Containern, die mit dem Befehl docker run gestartet werden, ermöglicht Docker eine konsistente und isolierte Umgebung für jede Anwendung. Mit Docker Hub, einer Plattform für gemeinsam genutzte Container-Images, kannst du sogar vorgefertigte Images verwenden, um deinen Arbeitsablauf zu beschleunigen.



Voraussetzungen


Bevor du beginnst, stelle sicher, dass Docker auf deinem System installiert ist. Wenn du es noch nicht hast, findest du die Installationsanleitungen auf der offiziellen  Docker-Website.



Dockerfile: Apache & PHP


Ein Dockerfile definiert, wie dein Container erstellt wird. Hier ist ein Beispiel, das Apache und PHP einrichtet, und das du mit dem Befehl docker run starten kannst:



##########################################
#
# Dockerfile
#
# See: https://docker.com/
# See: https://docs.docker.com/engine/reference/builder/
#
# Author: prod3v3loper
# Copyright: prod3v3loper
# License: MIT
# Since: v1.0.0
# Link: https://github.com/prod3v3loper/docker
#
##########################################

FROM php:8.1-apache

# Install system dependencies
RUN apt-get update && apt-get install -y \
nano \
vim \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
&& docker-php-ext-configure gd --with-freetype --with-jpeg \
&& docker-php-ext-install -j$(nproc) gd

# Install PHP extensions
RUN docker-php-ext-install pdo pdo_mysql mysqli && docker-php-ext-enable mysqli

# Copy files to container htdocs
COPY /var/www /var/www/html/

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

# NPM actions
# RUN npm install --production

# COMPOSER actions
# COPY --from=composer:latest /usr/bin/composer /usr/bin/composer

RUN a2enmod rewrite

CMD ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]


Docker Compose: MySQL & PhpMyAdmin


Docker Compose vereinfacht die Verwaltung von Multi-Container-Anwendungen. Du kannst die Images direkt von Docker Hub herunterladen und in deiner `docker-compose.yml`-Datei konfigurieren:



##########################################
#
# Docker-Compose
#
# See: https://docs.docker.com/compose/
# See: https://hub.docker.com/
#
# Author: prod3v3loper
# Copyright: prod3v3loper
# License: MIT
# Since: v1.0.0
# Link: https://github.com/prod3v3loper/docker
#
##########################################

version: "3.8" # Version

services:

# --- PHP #
#
#
php:
container_name: "docker-php"
build:
context: .
dockerfile: Dockerfile
volumes:
- ./php/php.ini:/usr/local/etc/php/php.ini
networks:
- github-sample-app

# --- APACHE #
#
#
apache:
container_name: "docker-apache"
build:
context: .
dockerfile: Dockerfile
ports:
- 8002:80
volumes:
- ./var/www:/var/www/html/
- ./apache2/log:/var/log/apache2/
- ./apache/apache2.conf:/etc/apache2/apache2.conf
- ./apache/httpd.conf:/etc/apache2/sites-available/httpd.conf
- ./apache/vhost.conf:/etc/apache2/sites-available/000-default.conf
links:
- db
- php
networks:
- github-sample-app

# --- MYSQL #
#
#
db:
container_name: "docker-mysql"
image: mysql:8.0.32
ports:
- 6606:3306
build:
context: .
environment:
MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_DATABASE}
MYSQL_PASSWORD: ${DB_PASSWORD}
env_file:
- ./.env
volumes:
- ./dump:/docker-entrypoint-initdb.d
- ./mysql:/var/lib/mysql/
networks:
- github-sample-app

# --- PHPMYADMIN #
#
# See: https://docs.phpmyadmin.net/en/latest/setup.html#installing-using-docker
#
phpmyadmin:
container_name: "docker-phpmyadmin"
image: phpmyadmin:5.2.1
build:
context: .
ports:
- 8003:80
environment:
PMA_HOST: db
links:
- db
networks:
- github-sample-app

networks:
github-sample-app:
driver: bridge

volumes:
db:


Starten der Umgebung mit docker run


Mit Docker Compose und dem Befehl docker run kannst du deine Umgebung einfach starten:

docker-compose up -d

Jetzt hast du eine voll funktionsfähige Webentwicklungsumgebung mit Apache, PHP, MySQL und PhpMyAdmin, bereit zur Nutzung.



Fazit


Docker, zusammen mit Befehlen wie docker run und Ressourcen wie Docker Hub, bietet eine kraftvolle Lösung für die Webentwicklung. Du kannst den vollständigen Code auf meinem  GitHub-Repository finden.

Viel Spaß beim Ausprobieren!