Erhalten Sie 502 Bad Gateway-Fehler beim Bereitstellen von WordPress auf Dockerized Lemp?

Lesezeit: 4 Minuten

Benutzer-Avatar
Sollosa

Die Ausgabe des Baumbefehls in meinem Projektverzeichnis zeigt das folgende Layout.

Geben Sie hier die Bildbeschreibung ein

wobei der Code-Ordner Standard-WordPress-Dateien enthält und der DB-Ordner Container-SQL-Daten dem Host-Verzeichnis zuordnen soll.

Der Inhalt der docker-compose.yml wird hier angezeigt:

mariadb:
 container_name: lemp-mariadb
 image: mariadb
 environment:
  - MYSQL_ROOT_PASSWORD=root.maria
  - MYSQL_DATABASE=wordpress
  - MYSQL_USER=wordpress
  - MYSQL_PASSWORD=wordpress
 volumes:
  - ./db:/var/lib/mysql
phpfpm:
 container_name: lemp-fpm
 image: php:7-fpm
 volumes:
  - ./code:/code
 environment:
  WORDPRESS_DB_HOST: mariadb
  WORDPRESS_DB_USER: wordpress
  WORDPRESS_DB_PASSWORD: wordpress
  WORDPRESS_DB_NAME: wordpress
 links:
  - mariadb
 command: docker-php-ext-install mysqli
nginx:
 container_name: lemp-nginx
 image: nginx:latest
 ports:
  - "8080:80"
 volumes:
  - ./code:/code
  - ./site.conf:/etc/nginx/conf.d/default.conf
 links:
  - phpfpm
 command: nginx -g 'daemon off;'

und unten ist die site.conf-Datei, die die Nginx-Konfiguration zeigt.

server {
 listen 80;
 root /code;
 index index.php index.html index.htm;

 location / {
     try_files $uri $uri/ /index.php?$args;
 }

 location ~ \.php$ {
     try_files $uri =404;
     include fastcgi_params;
     fastcgi_pass phpfpm:9000;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
 }
}

wenn ich docker-compose up -d & hit ausführe http://localhost:8080es zeigt 502 Bad Gateway Error.

Geben Sie hier die Bildbeschreibung ein

Warum funktioniert es nicht?? Ich möchte, dass die WordPress-Installationsseite angezeigt wird.

docker ps

Geben Sie hier die Bildbeschreibung ein

Ok, es scheint, dass das Problem auf dem Befehlsschritt im PHPFPM-Dienstabschnitt liegt.

command: docker-php-ext-install mysqli

Wenn ich diese Zeile in der Docker-Compose-Datei kommentiere und ausführe, werden auch Container angezeigt und verbunden, aber ich muss sie über diesen Befehl manuell auf dem fpm-Knoten installieren

docker exec lem-fpm docker-php-ext-install mysqli

&

docker-compose restart

und ich bekomme die wp-installationsseite, aber das ist nicht bequem, macht den ganzen Zweck der Automatisierung und Containerisierung zunichte, ich möchte, dass dieser Prozess automatisiert wird. Also sagen Sie mir bitte, ob es eine Möglichkeit gibt, es nur durch docker-compose zum Laufen zu bringen?

Benutzer-Avatar
Mihai

Erstellen Sie ein Shell-Skript (start.sh), platzieren Sie es neben Ihrer docker-compose.yml und machen Sie es ausführbar:

#!/bin/bash

docker-php-ext-install mysqli

php-fpm

Ordnen Sie es Ihrem Dienst zu und ändern Sie den Befehl:

phpfpm:
 container_name: lemp-fpm
 image: php:7-fpm
 volumes:
  - ./code:/code
  - ./start.sh:/usr/local/bin/start.sh
 environment:
  WORDPRESS_DB_HOST: mariadb
  WORDPRESS_DB_USER: wordpress
  WORDPRESS_DB_PASSWORD: wordpress
  WORDPRESS_DB_NAME: wordpress
 links:
  - mariadb
 command: /usr/local/bin/start.sh

  • fpm-Knoten immer noch mit 0-Code beendet. Wieso ist es so? warum kann es nicht weiter laufen??

    – Sollosa

    6. Mai 2019 um 9:37 Uhr

  • das tut mir leid. Ich habe meine Antwort bearbeitet. Es war der falsche Befehl im start.sh-Skript

    – Mihai

    6. Mai 2019 um 9:40 Uhr

  • ty amigo, jetzt klingt es komisch, ich erhalte einen Datenbankverbindungsfehler, ich kann mich mit mariadb verbinden, und wenn ich show databases starte; Befehl, es zeigt nur das Informationsschema und keine WordPress-Datenbank.

    – Sollosa

    6. Mai 2019 um 9:50 Uhr

  • Sie haben ein Volume für die Datenbank deklariert: “volumes: – ./db:/var/lib/mysql” Stellen Sie sicher, dass Sie diesen Ordner vor dem Start löschen (oder dass er zumindest leer ist), sonst wird die Datenbank nicht korrekt initialisiert. Aber noch wichtiger, ich sehe in Ihrem Setup nicht, wer die WP-Tabellen erstellen soll

    – Mihai

    6. Mai 2019 um 9:55 Uhr

  • Ich verstehe es nicht, ich räume diesen Ordner bei jedem Start von docker-compose auf. Und ich habe den Teil “Wer sollte Wp-Tabellen erstellen” überhaupt nicht verstanden. Darf ich bitte kleine Details wissen?

    – Sollosa

    6. Mai 2019 um 9:58 Uhr

Sie sollten “./code” so etwas wie “/var/www/code” anstelle von “/code” zuordnen. Ändern Sie dann die Wurzel in der site.conf: “root /var/www/code”.

Ich sehe aus Ihrem letzten Druckbildschirm, dass Sie zu /code umgeleitet werden und das sollte nicht passieren. Der Rest deiner Konfiguration sieht gut aus.

Sie können auch eine gute Referenz auf der offiziellen Seite sehen: https://www.nginx.com/resources/wiki/start/topics/recipes/wordpress/

  • Ich erhalte immer noch 502 Bad Gateway Error, ich denke, es liegt vielleicht am fpm-Knoten. vielleicht kann er sich nicht verbinden.

    – Sollosa

    6. Mai 2019 um 7:33 Uhr

  • Sie können dies mit “docker exec -ti phpfpm bash” überprüfen und versuchen, sich zu kräuseln lokaler Host: 9000 (Möglicherweise müssen Sie zuvor curl installieren)

    – Mihai

    6. Mai 2019 um 7:45 Uhr

  • es heißt Failes to connect to localhost port 9000: connection failed. Ich glaube, ich muss Ports explizit aktivieren oder so? Ich habe keine Ahnung, wohin ich gehen soll

    – Sollosa

    6. Mai 2019 um 7:55 Uhr

  • keine sorge, ich weiß 🙂 kannst du ein “docker ps” machen und die ergebnisse posten?

    – Mihai

    6. Mai 2019 um 7:57 Uhr

  • Ich habe die Ausgabe davon jetzt als Bild am Ende der Frage hinzugefügt.

    – Sollosa

    6. Mai 2019 um 8:04 Uhr

1344200cookie-checkErhalten Sie 502 Bad Gateway-Fehler beim Bereitstellen von WordPress auf Dockerized Lemp?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy