Mit folgenden 2 Dateien kann man sich einen einfachen Docker Lamp Stack installieren.
Dockerfile
Dockerfile
FROM php:8.2-apache
# Systemabhängige Libraries für GD, MySQL und Calendar installieren
RUN apt-get update && apt-get install -y \
libfreetype6-dev \
libjpeg62-turbo-dev \
libpng-dev \
libwebp-dev \
libzip-dev \
unzip \
libicu-dev \
&& rm -rf /var/lib/apt/lists/*
# PHP Extensions installieren
RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \
&& docker-php-ext-install gd pdo pdo_mysql calendar
# mod_rewrite aktivieren
RUN a2enmod rewrite
# Arbeitsverzeichnis setzen und Rechte für UID 1000 vorbereiten
WORKDIR /var/www/html
# Berechtigungen für UID 1000 setzen
RUN chown -R 1000:1000 /var/www/html /var/log/apache2 /etc/apache2
# UID 1000 als Standard-User festlegen
USER 1000:1000
# Apache im Vordergrund starten
CMD ["apache2-foreground"]docker-compose.yml
YAML
services:
web:
# Custom image php-apache:1 wird oben mit der Dockerfile gebaut
image: php-apache:1
container_name: lampp_web
user: "1000:1000"
volumes:
- /opt/lamppstack/www:/var/www/html
- /opt/lamppstack/apache/vhost.conf:/etc/apache2/sites-available/000-default.conf
- /opt/lamppstack/php/php.ini:/usr/local/etc/php/php.ini
- /opt/lamppstack/logs/apache:/var/log/apache2
depends_on:
- db
networks:
lampp_net:
restart: unless-stopped
db:
image: mariadb:11
container_name: lampp_web
user: "1000:1000"
environment:
MYSQL_ROOT_PASSWORD: <sql_root_password>
MYSQL_DATABASE: app
MYSQL_USER: app
MYSQL_PASSWORD: <sql_app_password>
volumes:
- /opt/lamppstack/mysql/data:/var/lib/mysql
- /opt/lamppstack/logs/mysql:/var/log/mysql
networks:
- lampp_net
restart: unless-stopped
networks:
lampp_net:
driver: bridge