Bekomme Apache nicht zum Laufen

xJuliusCaesar

New member
Hi Leute,
was Docker angeht, bin ich relativ am Anfang. Ich habe mir Tutorials angeschaut und auch einiges experimentiert. Jetzt wollte ich mir eine Entwicklungsumgebung in Docker aufbauen, aber was ich auch mache, welches Tutorial ich auch anschaue, ich bekomme den Apache nicht zum Laufen.

Ich verwende Docker für Windows und lasse die Container auf dem selben Rechner laufen, auf dem ich auch arbeite.

Hier mal meine Daten:
Verzeichnisstruktur:
Docker
|- backups
|- configs (mit php.ini und http.conf. Beide aktuell unverändert)
|- databases
|- logs
|- www (mit einer index.php
Code:
<?php
phpinfo();
)
|- meinWebserver.yml

Die meinWebserver.yml sieht wie folgt aus:
Code:
version: '3.8'

name: devserver

services:
  mariadb:
    image: mariadb:latest
    container_name: mariadb
    environment:
      - MYSQL_ROOT_PASSWORD=***************
      - MYSQL_DATABASE=testdb
      - MYSQL_USER=xjuliuscaesar
      - MYSQL_PASSWORD=***************
    volumes:
      - ./database:/var/lib/mysql
    networks:
      - devnetwork
    restart: always
 
  webserver:
    image: php:apache
    container_name: webserver
    depends_on:
      - mariadb
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./www:/var/www/html
      - ./configs/php.ini:/usr/local/etc/php/php.ini
    networks:
      - devnetwork
    restart: always
 
  phpmyadmin:
    image: phpmyadmin:latest
    container_name: phpmyadmin
    depends_on:
      - mariadb
      - webserver
    volumes:
      - ./configs/php.ini:/usr/local/etc/php/php.ini
    ports:
      - 81:80
    environment:
      - PMA_ARBITRARY=1
      - PMA_HOST=mariadb
    networks:
      - devnetwork
    restart: always

networks:
  devnetwork:
    driver: bridge
    name: devnetwork

Der Webserver an sich scheint zu laufen, denn ich kann über Docker auf dessen Dateisystem zugreifen.
phpMyAdmin und MariaDB laufen ebenfalls und da kann ich mich in der Zwischenzeit auch über localhost:81 mit dem entsprechenden Benutzer und Passwort auf die Datenbank einloggen. Hier hatte tatsächlich in fast allen Tutorials der Zusatz PMA_HOST=mariadb gefehlt.
Was nicht funktioniert, ist der Aufruf von localhost selbst. Selbst wenn ich den Port ändere, passiert einfach nichts. Der Browser sucht sich dumm. Ich bekomme keine Fehlermeldung oder Ähnliches angezeigt. Er sucht einfach Minuten lang und hört irgend wann einfach auf.

Hat jemand eine Idee, die mich weiter bringen könnte?

Das gleiche Problem hatte ich auch mit nginx.

Mit bestem Gruß und Dank
 
Zuletzt bearbeitet:
Ohne Ahnung von phpmyadmin zu haben, würde ich vermuten das PMA_HOST der Domainname sein müsste, mit dem man auf phpmaydmin zugreifen will. Vermutlich ist er optinal und deswegen in keinem der Tutorial erwähnt.

Hast Du mal in die Image-Beschreibung auf Dockerhub geschaut? Dort sollte erklärt sein was die Variable bedeutet, oder zumindest ein Link vorhanden sein auf weitere Dokumentation, die es dann erklärt.
 
@Confluencer
Der phpMyAdmin ist ja gar nicht das Problem. Der hat halt auch nur nie funktioniert, wenn ich strikt nach den Tutorials/Anleitungen vorgegangen bin.
Konnte zwar immer auf die Startseite zugreifen, aber er hat dann die Datenbank nie gefunden.
Da habe ich irgendwann zufällig heraus gefunden, dass ich das PMA_HOST angeben muss.

Aber bei dem PHP Apache bin ich langsam echt genervt. Der läuft ja scheinbar irgendwie, aber eben doch nicht richtig.
Wenn ich den Container beende, bekomme ich sofort eine Fehlermeldung. Keine Ahnung, was ich da noch probieren kann oder woran es liegen könnte.
 
Wenn ich den Container beende, bekomme ich sofort eine Fehlermeldung.
Hast Du Dir mal die Logs angeschaut (Container, als auch innerhalb des Containers)?

EDIT: Kannst auch mal einen anderen Port ausprobieren, evtl. mal 82 oder so und falls das nicht funktioniert, etwas oberhalb von 1024.
EDIT2: Du hast aber nicht zufällig noch irgendwas anderes auf Port 80 laufen (IIS, XAMPP, etc.)?
 
Zuletzt bearbeitet von einem Moderator:
@blurrrr
Ich habe schon andere Ports ausprobiert. 82, 8080.
Immer das selbe Ergebnis. Der Browser sucht und findet nichts.
Ich hatte den XAMPP auf Port 80 laufen, der ist aber definitiv aus. Schalte ich beides aus (Docker und XAMPP) kommt auch direkt eine Meldung, dass der localhost nicht existiert.
Schalte ich nur XAMPP an, geht der localhost.
Schalte ich nur Docker an, bekomme ich besagtes Verhalten.
 
Ganz ehrlich, ich weiß nicht, was es war.
Ich habe jetzt, weil ich festgestellt habe, dass er Änderungen in der yml-Datei mit einem
Code:
docker-compose -f meinWebserver.yml restart
scheinbar nicht übernimmt - ich hatte die Ports geändert, aber im DockerDesktop waren noch die alten Ports - alle Container geschlossen, die Images gelöscht und dann neu gestartet und was soll ich sagen, jetzt geht es. 🤔🤷‍♂️
Ich war bisher der Meinung, dass Änderungen in der yml-Datei bei einem restart-Befehl (meine das so irgendwo gelesen zu haben) oder nach einem Neustart des Computers automatisch übernommen werden. Aber scheinbar muss ich die Container mit einem erneuten up-Befehl starten?!?
Die Container wurden scheinbar mit den Einstellungen aus einer uralten yml-Datei gestartet, weil ich immer nur restart genutzt habe. Jedenfalls war hinter dem webserver in DockerDesktop nach starten des Computers kein Port hinterlegt und nach dem erneuten up-Befehl erscheinen hier jetzt die Ports 80:80 und 443:443.

Sorry für die Umstände.

@Confluencer:
Die Logs sahen aber trotzdem wie folgt aus:
Code:
2024-04-10 20:05:52 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.3. Set the 'ServerName' directive globally to suppress this message
2024-04-10 20:05:52 AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 172.18.0.3. Set the 'ServerName' directive globally to suppress this message
2024-04-10 20:05:52 [Wed Apr 10 18:05:52.658738 2024] [mpm_prefork:notice] [pid 1] AH00163: Apache/2.4.57 (Debian) PHP/8.3.4 configured -- resuming normal operations
2024-04-10 20:05:52 [Wed Apr 10 18:05:52.658847 2024] [core:notice] [pid 1] AH00094: Command line: 'apache2 -D FOREGROUND'
2024-04-10 20:05:59 172.18.0.1 - - [10/Apr/2024:18:05:59 +0000] "GET / HTTP/1.1" 200 23339 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
 
Aber scheinbar muss ich die Container mit einem erneuten up-Befehl starten?!?
Klar muss man das. Ein up provisioniert die Änderungen (=wirft den alten Container weg und erzeugt einen Neuen mit den neuen Werten). Ein restart arbeitet mit dem existierenden Container und stoppt und startet diesen wieder.

Die Logs waren nur interessant, als es nicht lief und man darüber ggf. etwas zum Grund hätte erfahren können :)
 
@Confluencer
Wie gesagt, hatte das irgendwo gelesen. Entweder wusste der Autor das auch nicht besser oder ich habe es falsch interpretiert. 🤷‍♂️
Aber vermutlich hätten wir unter diesen Umständen ewig nach der Lösung gesucht. 🙈

Dachte, ich stelle die Logs trotzdem mal rein. 😉
 

Zurzeit aktive Besucher

Keine Mitglieder online.

Letzte Anleitungen

Statistik des Forums

Themen
4.617
Beiträge
47.287
Mitglieder
4.263
Neuestes Mitglied
chrisdraks
Zurück
Oben