Flarum im Docker installieren

Hallo, hat jemand vielleicht eine Idee, was hier schiefläuft?

Ich möchte einen LAMP-Stack in genau einem Docker-Container starten.

Irgendwo habe ich gelsen, MySQL sei dafür nicht ausgelegt gewesen, und man soll mind. zwei Container wählen, aber mit einem Trick konnte ich auch das lösen.

Das Problem ist nun, dass einfach nur listen(); angezeigt wird, wenn man die Website aufruft.

Hier ist mein Setup:

docker-compose.yml
flarum-dockerfile/
├── 000-default.conf
├── Dockerfile
└── script_start_flarum.sh

Dockerfile:

FROM ubuntu:jammy

RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt update && apt upgrade -y
RUN apt install mysql-server apache2 php-curl php-xml php-gd php-json php-mbstring php-db php-tokenizer php-zip php-mysql composer git net-tools nano -y

ENV TZ=Europe/Berlin

COPY ./000-default.conf /etc/apache2/sites-available/000-default.conf

COPY ./script_start_flarum.sh /root/

ENTRYPOINT ["sh", "/root/script_start_flarum.sh"]

script_start_flarum.sh:

#!/bin/sh
mkdir -p /var/www/html/flarum/
if [ -z "$(ls -A /var/www/html/flarum/)" ]; then
   echo "Empty flarum dir, init ..."
   cd /var/www/html/flarum/ || exit
   composer create-project flarum/flarum .
   composer install
   chown -Rv www-data:www-data /var/www/html/flarum/
   chmod -Rv 755 /var/www/html/flarum/
   mysqld --initialize-insecure=ON
   sleep 5s
   mysqld &
   sleep 5s
   # PASSWDDB="$(openssl rand -base64 12)"
   PASSWDDB="AY2PHMHxsEUnN"
   MAINDB="flarum"
   mysql -uroot -e "CREATE DATABASE ${MAINDB} /*\!40100 DEFAULT CHARACTER SET utf8 */;"
   mysql -uroot -e "CREATE USER ${MAINDB}@localhost IDENTIFIED BY '${PASSWDDB}';"
   mysql -uroot -e "GRANT ALL PRIVILEGES ON ${MAINDB}.* TO '${MAINDB}'@'localhost';"
   mysql -uroot -e "FLUSH PRIVILEGES;"
else
   echo "Not empty flarum dir"
   cd /var/www/html/flarum/ || exit
   composer update
   mysqld &
   sleep 5s
fi
a2ensite 000-default
a2enmod rewrite
apachectl -D FOREGROUND

000-default.conf:

<VirtualHost *:80>

 DocumentRoot /var/www/html/flarum/public/

 # ServerName localhost

 DirectoryIndex index.php

 <Directory /var/www/html/flarum/public/>
    Options +FollowSymLinks

    AllowOverride All

    Order allow,deny

    allow from all
 </Directory>

 ErrorLog ${APACHE_LOG_DIR}/flarum-error.log

 CustomLog ${APACHE_LOG_DIR}/flarum-access.log combined

</VirtualHost>

Teil der docker-compose.yml (Ausschnitt):

  flarum:
    build: ./flarum-dockerfile
    volumes:
      - ./flarum-dockerfile/mysql-data/:/var/lib/mysql/
      - ./flarum-dockerfile/flarum-data/:/var/www/html/flarum/
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.flarum.rule=Host(`... ... ...`)"
      - "traefik.http.services.flarum.loadbalancer.server.port=80"
      - "traefik.http.routers.flarum.entrypoints=websecure"
      - "traefik.http.routers.flarum.tls.certresolver=myresolver"

Thx für Hilfe.

Ach, ich Dummerchen, jetzt funktioniert es … :sweat_smile:

Der Trick war folgender:

Die apt-Zeile muss so lauten: RUN apt install mysql-server apache2 php libapache2-mod-php php-curl php-xml php-gd php-json php-mbstring php-db php-tokenizer php-zip php-mysql composer git net-tools nano -y

ich hatte php sowie libapache2-mod-php vergessen, zu installieren. :person_facepalming:

Na ja, kann mal passieren - oder?