Lamp Stack für Docker Compose

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

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen